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

Unit testing 模拟对象应该调度事件吗?,unit-testing,model-view-controller,mocking,Unit Testing,Model View Controller,Mocking,我正在为我的MVC使用某种接线,我想测试控制器。到目前为止,我找到了两种方法:模拟视图分派事件或控制器公开公共方法 分派事件似乎是一种方法(如回答中所指出的),但如果我的视图是一个简单的模拟对象,我如何分派这些事件?如果视图通常分派事件,那么最好的办法就是让模拟对象也这样做。mock对象是用来模拟接口的,分派的事件是该接口的一部分(尽管并不总是文档化和可见的部分)。这也意味着您正在以与将要使用的控制器相同的方式测试控制器 当然,如果您的视图不能正常发送事件,那么我猜它通常使用公共方法,您也应该这

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


分派事件似乎是一种方法(如回答中所指出的),但如果我的视图是一个简单的模拟对象,我如何分派这些事件?

如果视图通常分派事件,那么最好的办法就是让模拟对象也这样做。mock对象是用来模拟接口的,分派的事件是该接口的一部分(尽管并不总是文档化和可见的部分)。这也意味着您正在以与将要使用的控制器相同的方式测试控制器


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

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

但是,如果我的视图为“dumb”,如何触发这些事件?这意味着向模拟添加一些额外的内容,但我希望有一些方法能够触发某些事件,然后从测试中调用这些事件。”viewMock.dispatchClickEvent()或类似文件。