2

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私が望んでいたものだと思いましたが、それはコレクション内のアイテムではなく、コレクション オブジェクト自体をアサートするためのものです。

4

2 に答える 2

2

残念ながら、これは現在のバージョンではまだ可能ではありません。拡張ポイントはありますが ( EquivalencyValidatorクラスを参照)、ステップのリストは現在非公開です。それ以外の場合は、 EnumerableEquivalencyStepを「含む」動作を提供する独自の実装に置き換えることができます。

于 2012-12-18T16:45:49.423 に答える