首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当使用存储库、工作单元和服务时,我应该如何实现单元测试?

当使用存储库、工作单元和服务时,我应该如何实现单元测试?
EN

Stack Overflow用户
提问于 2011-07-30 15:54:06
回答 2查看 185关注 0票数 0

我的控制器通常消耗一两个服务。反过来,我向这些服务注入一个相同的工作单元,以使用相同的上下文。这就是:

代码语言:javascript
复制
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);
    }
}

我的问题:

  1. 如何实现单元测试?我应该只注入工作单元,还是也注入工作和服务单元?
  2. 如何处理对象?我应该配置工作单元还是服务(而服务反过来处理工作单元)?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-30 16:33:42

1.)所有依赖项都应该注入,因此控制器中的任何内容都是新的,对于您来说,这将是您的工作单元和两个服务。这将使测试正常工作,因为您将能够模拟所有依赖项。实际上,更多地来看,您不应该注入unitofwork类,因为它只是服务的依赖。

2.)如果工作对象的单位实际上正在处理所有的工作,那么您的服务不应该需要处理。我的建议是在UnitOfWork类上实现i一次性,并将其放在the ()中。

票数 2
EN

Stack Overflow用户

发布于 2011-07-30 16:35:25

通常,您希望尽可能地隔离您正在测试的任何内容。因此,如果您正在测试您的控制器,唯一的“真实”对象应该是您的控制器。通过这种方式,您可以让模拟的服务/存储库从其操作中返回受控制/已知的事物,并/或确保控制器在其上调用正确的内容。

如果您不这样做,那么您的单元测试更像是一个集成测试,它可以确保多个“活动”对象按计划一起工作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6884270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档