Skip to content

DictionaryContainsKeyValuePairConstraint doesn't work with IDictionary<TKey, TValue> #3964

Closed
@pantosha

Description

@pantosha

DictionaryContainsKeyValuePairConstraint fails when actual object implements only IDictionary<TKey, TValue>, but not IDictionary:

[Test]
void Test()
{
    var dictionary = new TestDictionary();
    Assert.That(dictionary, new DictionaryContainsKeyValuePairConstraint(1, "hello"));
}

class TestDictionary : IDictionary<int, string>
{
    // Dictionary implementation
}

// Test fails with next error:
// 1) Error : NUnit.Framework.Constraints.DictionaryContainsKeyValuePairConstraintTests.ShouldCallContainsKeysMethodOnDictionary
// System.ArgumentException : Expected: IDictionary But was: TestDictionary (Parameter 'actual')

NUnit version: 3.13.2
Runner: NUnit3TestAdapter

It looks like the bug is here:

var dictionary = ConstraintUtils.RequireActual<IDictionary>(actual, nameof(actual));

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions