【发布时间】:2015-01-11 09:47:31
【问题描述】:
我有一个类PhotoOrganiser,并且正在尝试对其方法SortAll 进行单元测试。该方法调用类中的另一个方法MovePhoto。
解决这个问题的正确方法是什么?使用 Moq,我已经模拟了其他类 SortAll 引用,但据我所知,没有办法在不模拟对象本身的情况下模拟对象上的一种方法。最简单的方法是创建一个覆盖MovePhoto 的新子类吗?
【问题讨论】:
-
github.com/Moq/moq4/wiki/Quickstart ctrl-f 表示“部分”
-
Zerkms 是对的。您正在寻找的是部分模拟。
Moq支持。 -
谢谢大家,我错过了。那么这样做,我将不得不使方法覆盖虚拟?纯粹出于测试目的(而不是在程序本身中使用)这样做是否被认为是一种好的做法?
-
@tsvallender 我在必要时使用部分模拟。不确定它是否被社区认为是好还是坏:-)
-
IMO:不要。您正在像任何消费者一样使用其公共 API 测试该类,因此请相应地测试逻辑。不要测试“方法方法”,而是通过调用/行为来测试。试一试 TDD,这正是你最终要做的。
标签: c# unit-testing mocking moq