Rob*_*nik 7 unit-testing mocking
例
我有一个存储库类(DAL):
public class MyRepository : IMyRepository
{
public void Delete(int itemId)
{
// creates a concrete EF context class
// deletes the object by calling context.DeleteObject()
}
// other methods
}
Run Code Online (Sandbox Code Playgroud)
我也有一个服务类(BLL):
public class MyService
{
private IMyRepository localRepository;
public MyService(IMyRepository instance)
{
this.localRepository = instance;
}
public void Delete(int itemId)
{
instance.Delete(itemId);
}
// other methods
}
Run Code Online (Sandbox Code Playgroud)
为MyRepository创建单元测试比实现它需要更多的时间,因为我必须模拟实体框架上下文.
但是为MyService创建单元测试似乎是无稽之谈,因为它只调用Repository.我可以检查的是验证它是否确实调用了存储库删除方法.
题
您如何建议对这些Delete方法进行单元测试.都?一?没有?你会测试什么?
是的,我肯定会为服务层编写一个单元测试。这样做的原因是,您不仅要测试您的实现现在是否有效,还要测试它将来是否会继续有效。
这是一个需要理解的重要概念。如果后来有人更改了您的 ServiceLayer,并且没有单元测试,您如何验证该功能是否继续工作?
我还会为您的 DAL 编写测试,但我会将它们放在一个名为 DataTests 或其他东西的单独程序集中。此处的目的是跨程序集隔离您的关注点。单元测试确实不应该关心您的 DAL。
| 归档时间: |
|
| 查看次数: |
941 次 |
| 最近记录: |