FluentAssertionsを使用してコレクションとオブジェクトグラフの比較アサーションを結合しようとしています。FluentAssertions;コレクションとオブジェクトグラフの比較アサーションを組み合わせる
私は以下のクラスを持っています。
public class Contract
{
public Guid Id { get; set; }
public string Name { get; set; }
}
これはコレクションに返されます。
ICollection<Contract> contracts = factory.BuildContracts();
私はその後コレクションは、特定Contract
のオブジェクトが含まれていることを確認します。これは動作しません
contracts.Should().Contain(new Contract() { Id = id1, Name = "A" });
Contain
は(ShouldBeEquivalentTo
によって提供される)object.Equals
ではなく、オブジェクトグラフの比較を、使用しているので、私はだと信じています。
私はまた、すなわち
contracts.Should().NotContain(new Contract() { Id = id2, Name = "B" });
が効果的にアイテムの数が不明を含むコレクションを与え、コレクションが特定のオブジェクトが含まれていないことを主張する必要があり、私はそれを確実にしたいです。それにはいくつかの特定の項目が含まれており、複数の特定の項目が含まれていないことがわかります。
が、これはFluentAssertionsが提供する機能を使用して達成することができますか?
側の注意点として、私はここで説明する理由のためobject.Equals
を上書きする必要はありません。 Should I be using IEquatable to ease testing of factories?
+1と提案に感謝します。しかし、これは本当に私が欲しい答えではありません、私はequalsをオーバーライドし、単に標準の 'Assert.IsTrue(contracts.Contains(...))'を使用していました。しかし、これには独自の問題がありました(http://stackoverflow.com/questions/33988487/should-i-be-using-iequatable-to-ease-testing-of-factories)。私はFluentAssertionsを使用してEqualsのオーバーライドを避けることを望んでいます。 –
興味深いリンク...私はあなたが何かを把握すると確信しています。私はそれがどのように進化するのかを見るためにポストを見守ります:)。ところで、あなたは "[shouldly](https://github.com/shouldly/shouldly)"を実行しましたか?私はそのデフォルト動作が何であるか分かりませんが、あなたが望むように動作するかもしれません。 – Noctis