我有一个班级PhotoOrganiser
,我正在尝试对其方法SortAll
进行单元测试。此方法调用类MovePhoto
中的另一个方法。
正确的方法是什么?使用Moq,我已经模拟了其他类SortAll
引用,但据我所知,在没有模拟对象本身的情况下,无法在对象上模拟一个方法。最简单的方法是创建一个覆盖MovePhoto
的新子类吗?
答案 0 :(得分:1)
你不应该模仿MovePhoto
。您的SortAll
方法听起来应该很容易断言,可观察到的结果(照片正在排序)。
我建议再给你的设计一下。也许PhotoOrganizer
课太复杂了?也许移动照片足够大的工作值得拥有自己的课程?考虑在MovePhoto
方法中内联SortAll
用法时会发生什么。我意识到PhotoOrganizer
似乎是一个考虑应用目的的好名字,但在OOP 组织者中可能会尖叫SRP违规。设计问题通常由hard to write unit tests非常快速地突出显示。
所有事情都认为你可以用其他人提到的部分模拟解决它(是的,它需要方法是虚拟的)。但这是治疗症状而非战斗原因。