我试图断言Claim
s 的集合包含一组预期的声明。我似乎遇到的问题是无法检查子集并提供我自己的等效选项。
var expected = new[] {
new Claim(ClaimTypes.Name, "joshdev"),
new Claim(ClaimTypes.Email, "test@test.com"),
new Claim(ClaimTypes.GivenName, "Josh"),
new Claim(ClaimTypes.Surname, "Perry"),
};
var identity = GetIdentity();
我试过的...
identity.Claims.ShouldAllBeEquivalentTo(expected, options => options.Including(x => x.Type).Including(x => x.Value));
如果身份的声明不完全是预期的集合,那么这将失败,例如,不仅仅是那些声明。
identity.Claims.Should().Contain(expected);
这失败了,因为Contain
只是使用了object::Equals
该Claim
类型未实现的方法。
我需要的是某种方法,但具有与暴露Contain
相同的等效选项。ShouldAllBeEquivalentTo
我想也许ShouldBeEquivalentTo
会是我想要的,但这提供了断言集合对象本身,而不是集合中的项目。