【发布时间】:2014-11-24 11:44:52
【问题描述】:
我正在尝试为具有以下构造函数定义的 ASP.NET 创建一个单元测试(在运行实际应用程序时填充 Ninject):
public OrderController(IViewModelFactory modelFactory, INewsRepository repository, ILoggedUserHelper loggedUserHelper,
IDelegateHelper delegateHelper, ICustomerContextWrapper customerContext) {
this.factory = modelFactory;
this.loggedUserHelper = loggedUserHelper;
this.delegateHelper = delegateHelper;
this.customerContext = customerContext;
}
我想测试 OrderController 类中的方法,但为了隔离它,我必须模拟所有这些依赖项,这变得非常荒谬(可能还必须模拟子依赖项)。
在这种情况下,对此类进行单元测试的最佳实践是什么?
【问题讨论】:
-
只模拟所有四个注入的依赖项。如果您不使用起订量,它应该会使模拟变得容易得多。
-
我正在使用 Moq 来模拟这些依赖项(或者至少这是我的意图)
-
是什么让我们对嘲笑四个依赖项如此可笑?大概你只需要在每个模拟对象上设置一两个方法?
-
但是如果我这样做,实现细节不会在测试中泄露吗?
标签: c# .net unit-testing mocking