2011-07-15 97 views
1

我想要某个对象的某个方法在运行单元测试时始终返回一定的值。例如。覆盖方法返回值

  • 对象A具有方法A正常返回 “foo” 的
  • 对象B实例化对象A和方法B调用方法A
  • 单位测试A调用方法B

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

我不认为模拟会起作用,因为您需要提前提供对象参考(至少在Moq中)。有任何想法吗?

回答

1

嘲笑是用于这种场景的工具。大多数模拟框架将使您能够在不创建实例的情况下模拟对象A.例如,来自微软的鼹鼠将使您能够实现您描述的场景。

Moles

2

如果可能的话,你应该把对象A作为依赖项传入对象B.然后你可以使用Moq模拟出依赖关系,并在方法A被调用时返回Bar

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