5

質問

  • ASP.NET MVC4 Web アプリケーションを EntityFramework 5 でテストするにはどうすればよいですか?
  • Moq のようなモック フレームワークを使用する必要がありますか?

序章

私はこのトピックについて何週間も研究してきました。私は多くの資料を見つけましたが、質問に完全に答えていると感じるものは何もありません. 多くの情報は何年も前のものであり、当てはまらない場合があります。

私の状況

既存の古いアプリケーションを再構築した MVC4 アプリケーションを構築しています。データベースが既に存在し (したがって、データベース ファーストのアプローチ)、大規模で複雑です。理想的には、メイン エンティティ オブジェクトと同一であるが、別の「モック」またはメモリ内データベースを使用する偽の「エンティティ」オブジェクトが必要です。これにより、一連の偽のデータを生成し、テストを実行して、フィードバックを受け取ります。例えば:

FakeEntities _db = new FakeEntities();
// test a controller action

ここのところ...

私がこれまでに理解したことから、統合テストを使用する必要があります。Ladislav Mrnka によるこの投稿によると、統合テストとは、コントローラーのアクションをテストすることを意味し、LINQ-to-entities および LINQ-to-objects の問題が少ないことを意味します。

リポジトリをモックする場合は、Linq-To-Objects を使用し、緑色のテストが表示されますが、Linq-To-Entities を使用してアプリケーションを実行すると、例外が発生します。

私は彼が何を意味するかを知っており、同意できます.Linq-To-Entitiesと実際の(または実際に近い)データベースを常に使用していることを確認したいと思います。

私はリポジトリ パターンについて多くのことを読んできましたが、linush によるこのブログは、私が試みているものにかなり近いようです。実際、汎用リポジトリの作成をテストし、メモリ内 ObjectSet に依存する Entity Framework と「モック」DbContext を正常に使用したダミー プロジェクトを既に作成しました。

このアプローチに関する私の問題は

  1. 上記のように、これは Linq-To-Entities の代わりに Linq-To-Objects を使用していることを意味します
  2. 私の Web アプリは、ストアド プロシージャの多用に依存します

答える前のまとめ

  • MVC4、EF5、および SQL Server (ただし、データベースにとらわれないままにしたい)
  • SQL ストアド プロシージャを使用するロジックをテストする機能
  • Linq-To-エンティティ
  • データベースファーストのアプローチ
4

2 に答える 2

1

LINQ と Entity Framework の使用方法Unit Of Workと使用方法に関する 2 つの記事を書きました。Repository Patternテスト/モックに関しては素晴らしい方法です。それらを見てください。

http://gaui.is/how-to-mock-the-datacontext-entity-framework/

http://gaui.is/how-to-mock-the-datacontext-linq/

于 2013-07-27T22:09:28.450 に答える