我是.NET开发人员,我正在为我的数据访问层编写测试。我有使用假存储库的测试 - 我已经通过使用Moq和Ninject来实现。
我正在了解EntityFramework 4.1 Code First模型,我想为CRUD例程创建一个原型。它是一个MVC应用程序,因此我的实体不会被上下文跟踪。
对我而言,编写将对数据库进行更改的测试感觉不对。每次我想运行这些测试时,我都必须清除数据库。这是测试CRUD例程的唯一方法吗?
谢谢
答案 0 :(得分:1)
如果您不访问数据,您希望如何测试数据访问?是的,应该根据真实数据库测试数据访问。您的问题有一个非常简单的解决方法。在测试结束时进行测试事务和回滚更改。您可以使用这样的基类(NUnit):
[TestFixture]
public abstract class BaseTransactionalTest
{
private TransactionalScope _scope = null;
[SetUp]
public void Initialize()
{
_scope = new TransactionalScope(...);
}
[TearDown]
public void CleanUp()
{
if (_scope != null)
{
_scope.Dispose();
_scope = null;
}
}
}