私は不変の辞書の特別なケースを実装していますが、これは便宜上IEnumerable<KeyValuePair<Foo, Bar>>
. 通常ディクショナリを変更する操作は、代わりに新しいインスタンスを返す必要があります。
ここまでは順調ですね。しかし、クラスの流暢なスタイルの単体テストを作成しようとすると、私が試した 2 つの流暢なアサーション ライブラリ ( ShouldとFluent AssertionsNotBeSameAs()
) のどちらも、実装するオブジェクトの操作をサポートしていIEnumerable
ないことがわかりました。それらにObject
。
私が最初にこれに遭遇したとき、Should で、それはフレームワークの単なる穴だと思いましたが、Fluent Assertions に同じ穴があるのを見て、そう思いました (私は C# に比較的慣れていないため)。 C# コレクションに関する概念的な何かが欠けている可能性があります。
明らかに、これをテストする他の方法があります-キャストしObject
て使用するNotBeSameAs()
、単に使用するObject.ReferenceEquals
など-しかし、そうしない正当な理由がある場合は、それが何であるかを知りたいです。