编程语言
首页 > 编程语言> > c# – 在大型依赖对象图上注入Mocks

c# – 在大型依赖对象图上注入Mocks

作者:互联网

对于我想要测试的对象,我有一个相当重要的依赖图.解决我的依赖关系而不必在任何地方注册模拟的最简单方法是什么?

例如,我有一个这样的依赖图:

  PublicApi
    ApiService
      AccountingFacade
         BillingService
           BillingValidation
           BillingRepository
         UserService
           UserRepository

我想测试PublicApi.CreateUser(),我想让它运行所有代码,但我想模拟存储库,所以我不必向数据库写任何东西.我应该只使用DI容器并注册我的所有服务,用mocks替换存储库,然后解析PublicApi并运行该方法?

我正在调查AutoFixture,看起来它可能能够处理这样的事情,但我无法完全围绕整个’Freeze’与’Register’进行整合,并且它与Moq集成.

解决方法:

对于Unittests,您应该只模拟直接依赖项.在您的情况下,您创建PublicApi并为ApiService注入一个模拟,并验证PublicApi是否在ApiService Mock上使用正确的值调用适当的方法.

与测试与更深层依赖项隔离的所有其他组件的方法相同.

如果要测试多个组件的组合,那不是单元测试,而是集成测试.因此,这取决于你如何将你的课程放在一起.例如如果您使用的是IoC容器,它可能支持以某种方式替换存储库的配置.在这种情况下,您可以使用应用程序的配置并使用模拟替换存储库以及可能的视图.

标签:c,dependency-injection,unit-testing,moq,autofixture
来源: https://codeday.me/bug/20190610/1209308.html