模拟一个对象的方法

时间:2015-01-11 09:47:32

标签: c# unit-testing mocking moq

我有一个班级PhotoOrganiser,我正在尝试对其方法SortAll进行单元测试。此方法调用类MovePhoto中的另一个方法。

正确的方法是什么?使用Moq,我已经模拟了其他类SortAll引用,但据我所知,在没有模拟对象本身的情况下,无法在对象上模拟一个方法。最简单的方法是创建一个覆盖MovePhoto的新子类吗?

1 个答案:

答案 0 :(得分:1)

你不应该模仿MovePhoto。您的SortAll方法听起来应该很容易断言,可观察到的结果(照片正在排序)。

我建议再给你的设计一下。也许PhotoOrganizer课太复杂了?也许移动照片足够大的工作值得拥有自己的课程?考虑在MovePhoto方法中内联SortAll用法时会发生什么。我意识到PhotoOrganizer似乎是一个考虑应用目的的好名字,但在OOP 组织者中可能会尖叫SRP违规。设计问题通常由hard to write unit tests非常快速地突出显示。

所有事情都认为你可以用其他人提到的部分模拟解决它(是的,它需要方法是虚拟的)。但这是治疗症状而非战斗原因。