【发布时间】:2015-12-10 11:05:08
【问题描述】:
我从未编写过单元测试,但我想在我的新项目中使用它们。这是我的代码示例:
public class UnitOfWork : IDisposable, IUnitOfWork
{
private IDbContext context = new MyDbContext();
private IUserRepository userRepository;
public IUserRepository UserRepository
{
get
{
if (this.userRepository== null)
{
this.userRepository = new UserRepository (context);
}
return userRepository;
}
}
}
public class UserController : Controller
{
private IUnitOfWork unitOfWork;
public UserController(IUnitOfWork unitOfWork)
{
this.unitOfWork = unitOfWork;
}
public ActionResult GetSomeUsers ()
{
var users = unitOfWork.UserRepository.GetSomeUsers(/*Some condition*/);
return View(users);
}
}
让我们假设var users = unitOfWork.UserRepository.GetSomeUsers(/*Some condition*/); 里面有一些复杂的查询。
我想知道的第一件事是如何对该查询进行单元测试,我是否必须创建一个具有预定义记录并针对该数据库进行查询的单独数据库?
第二件事是如何仅使用模拟的 UserRepository 测试控制器方法?
如果你能写一个简短的例子或提供一些教程链接,那就太好了。
【问题讨论】:
-
你为什么不检查一些开源项目测试并以它们为例? GitHub 中托管了大量 .NET 项目
-
一个好的开始可能是研究集成测试和单元测试之间的区别。每个都有很多优点和缺点,我不会在这里讨论。但它有望以某种方式回答您关于是否在测试中包含数据库的问题。
标签: asp.net .net entity-framework unit-testing moq