模拟对象应该调度事件吗?

时间:2009-06-07 12:21:38

标签: unit-testing model-view-controller mocking

我正在为我的MVC使用this种接线,我想测试控制器。到目前为止,我已经找到了两种方法:我的模拟视图调度事件或我的控制器公开公共方法。

调度事件似乎是要走的路(正如答案中所指出的那样),但如果我的视图是一个简单的模拟对象,我该如何调度这些事件?

2 个答案:

答案 0 :(得分:1)

如果您的视图通常会调度事件,那么最好的方法是让您的模拟对象也这样做。模拟对象用于模拟接口,调度事件是该接口的一部分(尽管并不总是记录良好且可见的部分)。这也意味着您将以与将要使用的控制器相同的方式测试控制器。

当然,如果您的视图没有正常发送事件,那么我猜它通常使用公共方法,您也应该这样做。

答案 1 :(得分:0)

由于您没有用语言标记问题,我不知道这是否有效,但是您是否考虑过使用反射并以这种方式运用受保护/私有控制器方法?在我看来,您应该测试该方法是否正确运行,如果您的语言支持,您可以通过反射调用它来执行此操作。您需要进行其他测试以确保正确设置事件处理程序,或者如果您编写了调度事件的代码,则需要测试事件是否已正确分派。

相关问题