sco*_*ttm 4 c# unit-testing dependency-injection moq autofixture
对于我想要测试的对象,我有一个相当重要的依赖图.解决我的依赖关系而不必在任何地方注册模拟的最简单方法是什么?
例如,我有一个这样的依赖图:
PublicApi
ApiService
AccountingFacade
BillingService
BillingValidation
BillingRepository
UserService
UserRepository
Run Code Online (Sandbox Code Playgroud)
我想测试PublicApi.CreateUser()
,我想让它运行所有代码,但我想模拟存储库,所以我不必写任何东西到数据库.我应该只使用DI容器并注册我的所有服务,用mocks替换存储库,然后解析PublicApi
并运行该方法?
我正在调查AutoFixture,看起来它可能能够处理这样的事情,但我无法完全围绕整个'Freeze'与'Register'进行整合,并且它与Moq集成.
对于Unittests,您应该只模拟直接依赖项.在你的情况下,你创建PublicApi
并注入一个模拟器,ApiService
并验证是否PublicApi
在ApiService
Mock 上使用正确的值调用适当的方法.
与测试与更深层依赖项隔离的所有其他组件的方法相同.
如果要测试多个组件的组合,那不是单元测试,而是集成测试.因此,这取决于你如何将你的课程放在一起.例如,如果您使用的是IoC容器,它可能支持以某种方式替换存储库的配置.在这种情况下,您可以使用应用程序的配置并使用模拟替换存储库以及可能的视图.
归档时间: |
|
查看次数: |
528 次 |
最近记录: |