据我所知,RM应该模拟派生类可以访问的任何内容。由于可以从子类访问受保护的虚拟成员,因此它不应该是可模拟的吗?
我的理解是RM不支持模拟受保护的虚拟成员。
答案 0 :(得分:2)
如果我想模拟受保护的成员,我通常会跳过Rhino Mocks,并使用我自己的假实现进行子类化。
答案 1 :(得分:1)
据我所知,RM应该嘲笑 任何可以被访问的东西 衍生类。
没有。这个想法是你应该能够模拟被测试类的依赖关系的行为。这里使用的单词 dependencies 与dependency injection中的含义相同。
在测试驱动开发中,通常favors composition over inheritance。依赖关系通常隐藏在接口后面。
我的理解是RM没有 支持模拟受保护的虚拟 成员。
这是对的。在设置行为时,有两种简洁且类型安全的方法来指定您正在讨论的类成员:通过在记录模式下调用成员,或使用lambda表达式。 Rhino Mocks支持两者,但两者都不适用于受保护的成员。