我的控制器通常消耗一两个服务。反过来,我向这些服务注入一个相同的工作单元,以使用相同的上下文。这就是:
public class TestController : Controller
{
private UnitOfWork _unitOfWork;
private Service1 _service1;
private Service2 _service2;
public TestControler()
{
_unitOfWork = new UnitOfWork();
// here I inject the unit of work to the services.
_service1 = new Service1(_unitOfWork);
_service2 = new Service2(_unitOfWork);
}
}我的问题:
发布于 2011-07-30 16:33:42
1.)所有依赖项都应该注入,因此控制器中的任何内容都是新的,对于您来说,这将是您的工作单元和两个服务。这将使测试正常工作,因为您将能够模拟所有依赖项。实际上,更多地来看,您不应该注入unitofwork类,因为它只是服务的依赖。
2.)如果工作对象的单位实际上正在处理所有的工作,那么您的服务不应该需要处理。我的建议是在UnitOfWork类上实现i一次性,并将其放在the ()中。
发布于 2011-07-30 16:35:25
通常,您希望尽可能地隔离您正在测试的任何内容。因此,如果您正在测试您的控制器,唯一的“真实”对象应该是您的控制器。通过这种方式,您可以让模拟的服务/存储库从其操作中返回受控制/已知的事物,并/或确保控制器在其上调用正确的内容。
如果您不这样做,那么您的单元测试更像是一个集成测试,它可以确保多个“活动”对象按计划一起工作。
https://stackoverflow.com/questions/6884270
复制相似问题