出于兴趣,在使用 Moq 测试框架进行模拟时不包括设置会产生什么影响?

Just out of interest, what is the impact of not including a setup while mocking using Moq test framework?

我只是想知道在最小起订量单元测试期间不包括设置的影响 运行。我只使用 Moq.Verify 来查看我的函数是否被调用,没有别的。

  1. 在 void 方法上什么都不会发生
  2. 方法的 return 值将是 default(T)
  3. 部分模拟(CallBase = true);虚方法的真正实现会执行
  4. 严格模拟;任何非设置方法的调用都会引发异常。
  5. 在测试结束时调用 .VerifyAll() 将不会执行任何操作。
  6. 您将无法从方法(callback, raise)
  7. 中引发额外的操作

在您的情况下,您似乎根本不必使用设置方法...

这取决于您的模拟对象将使用哪个 MockBehavior

  • 如果它将是 Strict 并且您的代码正在尝试执行未设置的方法,则测试方法将抛出类似 Moq.MockException: Class.Method() invocation failed with mock behavior Strict. All invocations on the mock must have a corresponding setup. 的异常。

  • 如果它是 Loose 那么它永远不会抛出 returns 默认值或空数组,可枚举等,如果没有为成员设置期望。