0

単体テストに慣れようとしています。インターネットからのデータを解析してデータベースに保存する小さなアプリケーションを作成しました。このために、Entity Framework を使用しています。

メソッドの多くは void メソッドなので、

public void UpdateSiteValue(Site site, ObjectContext context)

このメソッドは、データベース内の値を更新するために使用できます。だから私は基本的に単体テストの観点からこれにどのようにアプローチするのか疑問に思っています。多分私はオブジェクトコンテキストをモックできますか?

任意の入力をいただければ幸いです。

4

1 に答える 1

2

何をテストするかによって異なります。

void を返しているため、関数の戻り値をテストすることはできません。メソッドが実際にデータベースに変更を加えるかどうかをテストしたいですか? その場合、実際のコードをテストしていないため、コンテキストをモックすることは最善の解決策ではありません。Ladislav Mrnka はそれについて素晴らしい投稿をしました。テストをトランザクション スコープでラップしてから、後でロールバックできますか? Id はインクリメントされますが、少なくともすべてをテストすることになります。

または、メソッドがすべて正しく機能していることをテストしたい場合は、データベース層に到達するまで、いくつかの方法があります。多くの場合、テストで EF に依存しないように、リポジトリ パターンを使用することをお勧めします。Truewillもこれについて良い記事を作成しました。彼は、これに関するMSDN の記事へのリンクも示しており、関連するメモリ内の ObjectContext を使用しています。

以下は、ユニット vs 関数 vs 統合テストに関するより一般的な読み物です。

于 2012-09-05T13:22:14.993 に答える