可以说我们在Service
上有一个DI
和其他服务。被测方法对输入数据进行某种处理,进行一些验证,调用几个注入的服务(只能获取数据或修改数据然后返回某些内容),然后返回某些内容。
鉴于这种情况,我需要编写许多案例来测试所有可能的行为,例如验证异常,未找到的异常,业务异常,正常流程等...
问题是我需要模拟注入服务上的所有方法以进行设置。这可能增长很快。
在这种大型/复杂方法中,固定装置和设置(模拟依赖项)的最佳方法是什么?有解决此问题的模式吗?
对于数据模拟,我使用builder pattern
,它很好地简化了任务。
答案 0 :(得分:1)
您应该尝试创建独立的类,可以在不引入过多依赖项的情况下进行测试,但是在某些时候,会有一个使用其他组件的类(例如ViewModel)。在这种情况下,我使用: https://github.com/AutoFixture/AutoFixture
它有助于创建受测系统/类,并有助于注入依赖关系。您可以将它与NSubstitute一起使用,但不仅可以与它一起使用。
使用AutoFixture,您可以创建要检查的模拟类,但是不需要的其余依赖项AutoFixture将为您自动生成,因此扩展构造函数不会导致修改单元测试。