私の会社では、ローカルの開発データベースとTransactionScopeを使用して変更をロールバックしています。ユニークな副作用は挿入をテストするときに同一性を高めることですが、これは問題ではありません。
利点は、データベースに対して実際のテストがあることです。
電子メールを送信するか、別のサーバーにデータを送信する必要がある場合は、ninject/moqを使用して依存関係注入を使用してIoCに戻ります。
エンティティフレームワークと接続文字列をテストプロジェクトに追加する必要があります。
[TestClass]
public class NameValueTest
{
[TestMethod]
public void Create()
{
NameValueController controller = new NameValueController();
using (var ts = new TransactionScope())
{
Assert.IsNotNull(controller.Create(new Models.NameValue()
{
name1 = "1",
name2 = "2",
name3 = "3",
name4 = "4"
}));
//no complete, automatically abort
//ts.Complete();
}
}
}
私はこれがあなたを助けてくれることを願っています。
これはおそらく、私が見つけた最高の一例であるが、それは実際にデータベースに触れて、代わりにすべてをモックアップする方法についてだけの話コードを統合する方法をスキップ: http://blogs.msdn.com/ b/adonet/archive/2009/12/17/walkthrough-test-driven-with-entity-framework-4-0.aspx 私はEF4プロジェクトの実例を見いだすことを望んでいました。 dbを作成し、DI、模擬/テストなどを修正する方法 – znelson
この例では、EFのリポジトリパターンを使用しているため、リポジトリの実装を模擬することができます。しかし、ORMを持つリポジトリを使用しないという良い議論があります。 http://stackoverflow.com/questions/5625746/generic-repository-with-ef-4-1-what-is-the-point/5626884#5626884を参照してください。また、統合テストの使用については、http://stackoverflow.com/questions/5609508/asp-net-mvc3-andentity-framework-code-first-architecture/5610685#5610685を参照してください。 – devdigital
レポジトリを使用してインプリメンテーションをモックした場合、エンティティフレームワークをテストしていないため、LINQクエリが本番環境で失敗する可能性があるため、メモリデータベースを使用した統合テストでは実際にEFをテストしています。 – devdigital