我正在对我们团队正在构建的 asp.net MVC 3 Web 应用程序进行单元测试。
问题是我们必须模拟很多东西,而我们的单元测试并没有涵盖所有的网络服务器和数据库相关的东西。
例子:
我有一个带有以下代码的方法:
public List<Useraccount> GetUseraccounts(Company company)
{
return company.Useraccounts.ToList<Useraccount>();
}
我的开发人员抱怨说他必须注入一个他自己准备的假公司对象。他想从数据库中获得一个真实的对象。
我的问题:是否可以在单元测试中使用真正的数据库(也可以是 SQLite/SQLExpress 或其他东西)?这有用吗?优缺点都有什么?
如果没有真正的数据库,我们需要模拟太多的对象。例如,我们无法验证此类调用是否有效:
Useraccount useraccount = UnitOfWork.UseraccountRepository.Get(u => u.EnableCode == enableCode && u.IsEnabled == false).Single<Useraccount>();