1

私は次の方法を持っています:

Void UpdateUser(User user){}

このメソッドが正しく機能するかどうかを確認する必要があります。

単体テストでこれをチェックするために別のデータベースを使用しました。しかし、多くの経験豊富な人々は、この方法を使用すると単体テストにはならないと言っていました。それが統合テストです。

しかし、単体テストのためにモックする方法がわかりません。

メソッドに記述されたコードは、UpdateUserEntity フレームワークを使用してデータを更新しようとします。

私がモックした場合(実際にはこれを行う方法もありません)、これはエンティティフレームワークでどのように機能しますか?

4

6 に答える 6

4

モッキングとは、動作を伴うクラスがインターフェイス (または抽象クラス) として使用/消費/呼び出されるように、ソフトウェア コンポーネント (クラス) を開発することを意味します。抽象化するようにプログラムします。実行時に何か (サービス ロケーター、DI コンテナー、ファクトリなど) を使用して、それらのインスタンスを取得/作成します。

最も一般的な方法は、コンストラクション インジェクションを使用することです。ここでは、なぜ DI を使用するのかについての優れた説明と、その方法の例を示します。

あなたの場合、Entity Framework (たとえばリポジトリ) を使用するコンポーネントはリポジトリ インターフェイスを実装する必要があり、リポジトリを使用するクラスはそれをインターフェイスとして使用する必要があります。

このようにして、単体テストでリポジトリをモックできます。つまり、単体テスト リポジトリ クラス (データベースや EF とは関係ありません) を作成し、単体テストするクラスのインスタンスを作成するときにそれを使用します。

うまくいけば、これが役に立ちます。見つけられる多くのソースがあります。個人的には、この本を読んだだけで、とても良い本だと思いました。作者ブログです

于 2013-10-23T12:33:11.393 に答える
-1

トランザクションを使用し、テストの最後にトランザクションをロールバックします

于 2013-10-23T12:21:10.543 に答える