如何用最小起订量模拟被测类的方法
本文关键字:方法 模拟 何用最 | 更新日期: 2023-09-27 18:08:34
我有一个服务类,我想进行单元测试。服务调用存储库类方法来保存一些数据。但是在调用save方法之前,我有一个验证方法,它属于被测试的服务类,它验证要作为存储库保存方法的参数持久化的类的属性。
我知道要验证存储库保存方法是否被调用,我必须模拟存储库类并设置保存方法,但是我如何验证属于被测服务类的验证方法在对被测方法进行单元测试时被调用,因为它们属于同一个类?
您可以通过传入无效数据来间接测试这一点,这会使Verify
方法报告错误。
例子:
-
Verify
抛出一个无效值的异常:让你的单元测试检查这个异常是否被抛出 -
Verify
返回false
,并且测试中的方法不调用Save
,因为这一点:在存储库模拟上断言没有调用Save
发生。
除非你把你的服务类注入到其他类中,否则你不能。这是你需要做的。
- 创建一个类,它通过公共构造函数或公共属性获取你的服务类的一个实例。
- 模拟服务类所依赖的存储库类型,以便保存实体并将其保存在变量中。
- 在模拟的repo的Save方法上设置一个期望
- 模拟你的服务类,但是在你的模拟服务类中注入被模拟的repo(通过属性或构造函数)。
- 在模拟服务类的Validate方法上设置一个期望。
- 在步骤1中创建的类中注入模拟的服务类,现在如果没有满足您的期望,测试将失败。