Claimのコレクションに期待される一連のクレームが含まれていると主張しようとしています。私が直面しているように見える問題は、サブセットをチェックして独自の等価オプションを提供する方法がないことです。
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));
ID のクレームが期待されたセットと正確に一致しない場合、これは失敗します。たとえば、それらのクレーム以上のものがある場合です。
identity.Claims.Should().Contain(expected);
型が実装していないメソッドをContain単に使用しているため、これは失敗します。object::EqualsClaim
私が必要としているのは何らかの方法ですContainが、エクスポーズと同じ等価オプションを使用しますShouldAllBeEquivalentTo。おそらくShouldBeEquivalentTo私が望んでいたものだと思いましたが、それはコレクション内のアイテムではなく、コレクション オブジェクト自体をアサートするためのものです。