覆盖方法返回值

时间:2011-07-15 20:53:53

标签: .net unit-testing mocking

我希望对象的某个方法在运行单元测试时始终返回某个值。例如。

  • 对象A具有通常返回“Foo”
  • 的方法A.
  • 对象B实例化对象A并在方法B中调用方法A
  • 单元测试A调用方法B

在单元测试中我希望方法A返回“Bar”,但在所有其他情况下我想返回“Foo”。

我不认为Mocking会起作用,因为你需要提前提供对象参考(至少使用Moq)。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

如果可能,您应该将对象A作为依赖项传递给对象B.然后,您可以使用Moq模拟出依赖关系,并在调用方法A时返回Bar

如果A的对象创建是在B内部完成的,那么对象B对于这部分是不可测试的(因此你应该传入你的依赖关系)。

答案 1 :(得分:1)

模拟是用于此类场景的工具。大多数模拟框架将使您能够在不创建实例的情况下模拟对象A.例如,Microsoft的痣将使您能够实现您描述的方案。

Moles