如何使用MOQ模拟测试类的方法

时间:2011-09-15 10:48:25

标签: c# asp.net-mvc vb.net nunit moq

我有一个服务类,我想进行单元测试。该服务调用存储库类方法以保存一些数据。但是在我调用save方法之前,我有一个属于被测试服务类的validate方法,该方法验证要作为存储库保存方法的参数持久化的类的属性。

我知道要验证是否调用了存储库save方法,我必须模拟存储库类并设置save方法,但是如何在单元时验证属于被测服务类的validate方法是否被调用测试被测方法,因为它们属于同一个类?

2 个答案:

答案 0 :(得分:0)

您通过传入使Verify方法报告错误的无效数据来间接测试此内容。

示例:

  • Verify在无效值上抛出异常:让您的单元测试检查是否抛出了此异常
  • Verify返回false,并且测试中的方法不会调用Save因为:在您的存储库模拟中断言没有调用Save

答案 1 :(得分:0)

您无法直到在其他课程中注入服务类。这是你需要做的。

  1. 创建一个类,该类通过公共构造函数或公共属性获取服务类的实例。
  2. 模拟服务类所依赖的存储库类型,以便保存实体并将其保存在变量中。
  3. 设置对模拟仓库的Save方法的期望。
  4. 模拟您的Service类,但在模拟的服务类中注入模拟的repo(通过property或constrctor)。
  5. 设置对模拟服务类的Validate方法的期望。
  6. 在步骤1中创建的类中注入模拟的服务类,如果您的期望未得到满足,现在测试将失败。