c# - NUnit Has.Member fails when checking for object -
i have following nunit test:
[test] public void getcomplexrulestestcontents() { var _rule = new ruleviewmodel(null, "third rule", "description"); var result = _complexrulesservice.getcomplexrules(); assert.that(result, has.member(_rule)); } the code called _complexrulesservice.getcomplexrules() is:
public ienumerable<iruleviewmodel> getcomplexrules() { ienumerable<ruleviewmodel> _rules; _rules = new list<ruleviewmodel> { new ruleviewmodel(null, "first default rule", "description"), new ruleviewmodel(null, "second default rule", "description"), new ruleviewmodel(null, "third rule", "description") }; return _rules; } the error message is:
pl.web.mvc.rules.tests.complexrulesservicetests.getcomplexrulestestcontents: expected: collection containing <pl.web.mvc.models.rules.ruleviewmodel> was: < <pl.web.mvc.models.rules.ruleviewmodel>, pl.web.mvc.models.rules.ruleviewmodel>, <pl.web.mvc.models.rules.ruleviewmodel> > i have tried tests http://www.nunit.org/index.php?p=collectionconstraints&r=2.5.5 , pass.
what i'm doing wrong?
thanks in advance!
has.member uses object equality verify whether collection contains item:
for references, has.member uses object equality find member in collection.
what means is, classes compared equality using default equality comparision, (unless override it) object reference equality. , 4 different instances.
you can perform simple predicate matching bit of linq solve problem:
var expecteditem = results.firstordefault(vm => vm.property1 == null && vm.name == "third rule" && vm.description == "description"); assert.that(expecteditem, is.not.null); or, make more neat can add custom equality comparison method tests class , use predicate matching bit more fluency:
private bool rulesmatch(ruleviewmodel actual, ruleviewmodel expected) { return actual.property1 == expected.property1 && actual.name == expected.name && actual.description == expected.description; } assert.that(results, has.some.matches<ruleviewmodel>(v => rulesmatch(v, _rule)));
Comments
Post a Comment