单元测试,大型装置/固定装置

时间:2019-08-21 15:12:36

标签: c# unit-testing moq xunit

可以说我们在Service上有一个DI和其他服务。被测方法对输入数据进行某种处理,进行一些验证,调用几个注入的服务(只能获取数据或修改数据然后返回某些内容),然后返回某些内容。

鉴于这种情况,我需要编写许多案例来测试所有可能的行为,例如验证异常,未找到的异常,业务异常,正常流程等...

问题是我需要模拟注入服务上的所有方法以进行设置。这可能增长很快。

在这种大型/复杂方法中,固定装置和设置(模拟依赖项)的最佳方法是什么?有解决此问题的模式吗?

对于数据模拟,我使用builder pattern,它很好地简化了任务。

1 个答案:

答案 0 :(得分:1)

您应该尝试创建独立的类,可以在不引入过多依赖项的情况下进行测试,但是在某些时候,会有一个使用其他组件的类(例如ViewModel)。在这种情况下,我使用: https://github.com/AutoFixture/AutoFixture

它有助于创建受测系统/类,并有助于注入依赖关系。您可以将它与NSubstitute一起使用,但不仅可以与它一起使用。

使用AutoFixture,您可以创建要检查的模拟类,但是不需要的其余依赖项AutoFixture将为您自动生成,因此扩展构造函数不会导致修改单元测试。