0

ビジネスロジックを介してエンティティをロードし、dbcontextから直接ロードされたエンティティと比較することで、ビジネスロジックが正しいデータをロードしていることを単体テストしたいと思います。

Assert.AreEqualは失敗します。エンティティが追跡対象としてロードされるため、推測しています。

AsNoTracking()を使用できると思いましたが、機能しませんでした。

エンティティをエンティティフレームワークからPOCOに「アンラップ」する方法はありますか?

プロキシ作成の無効化について読みましたが、これが唯一のオプションですか?

ノックアウトjavascriptライブラリのko.utils.unwrapObservable()に似たものがあることを願っています(完全に異なる概念を認識していますが)。

4

1 に答える 1

1

これは奇妙な統合テストです(データベースを使用しているため、単体テストではありません)。データベースから再度ロードするのではなく、静的な期待値を定義するだけで十分です。動的テストはエラーが発生しやすく、問題を隠すことができます。

Equalそれを機能させるには、参照ではなくデータを比較するためにオーバーライドする必要があります。ビジネスロジックとは異なる参照があり、テストされたコンテキストとは異なる参照があるため、プロキシの作成を無効にしても機能しません(コンテキストを共有している場合を除きますが、その場合、テストはさらに奇妙になります)。

于 2012-05-23T08:13:50.753 に答える