objective-c – OcMock – Stub / expect / stopmocking
发布时间:2020-12-16 10:33:33 所属栏目:百科 来源:网络整理
导读:在我的夹具setUp我有以下 -(void)setUp{ _vc = [OCMockObject partialMockForObject:[[InboxViewController alloc] init]]; //stub out the view stuff [[_vc stub] removeTask:OCMOCK_ANY]; [[_vc stub] insertTask:OCMOCK_ANY];} 夹具中有15个测试,但是,我
在我的夹具setUp我有以下
-(void)setUp{ _vc = [OCMockObject partialMockForObject:[[InboxViewController alloc] init]]; //stub out the view stuff [[_vc stub] removeTask:OCMOCK_ANY]; [[_vc stub] insertTask:OCMOCK_ANY]; } 夹具中有15个测试,但是,我需要实际测试这两个方法是否被调用,所以我写了2个测试 -(void)someTest{ [[_vc expect] removeTask:OCMOCK_ANY]; [_vc removeAllTasksFromList:taskList notInList:newTaskList]; [_vc verify]; } 但那次测试失败了 我也试过了 -(void)someTest{ [[_vc stopMocking]; [[_vc expect] removeTask:OCMOCK_ANY]; [[_vc stub] removeTask:OCMOCK_ANY]; [_vc removeAllTasksFromList:taskList notInList:newTaskList]; [_vc verify]; } 但测试仍然失败.我错过了什么,或者这就是OCMock的工作方式? 我能让它发挥作用的唯一方法就是这样 -(void)someTest{ //re create and init the mock object _vc = [OCMockObject partialMockForObject:[[InboxViewController alloc] init]]; [[_vc expect] removeTask:OCMOCK_ANY]; [[_vc stub] removeTask:OCMOCK_ANY]; [_vc removeAllTasksFromList:taskList notInList:newTaskList]; [_vc verify]; } 解决方法
也许文档应该更清晰. stopMocking对部分模拟的作用是将真实对象(在您的情况下为InboxViewController)恢复到其原始状态.调用stopMocking不会重置模拟对象,这意味着它不会清除存根和期望.您始终可以调用stopMocking,然后为同一个真实对象创建一个新的模拟.
正如在另一个答案中指出的那样,通常可以更好地避免使用存根和期望相同的方法,但是如果必须这样做,请确保在存根之前设置期望值;否则存根将处理调用,期望永远不会看到它们. 我知道传统上很多人建议使用设置方法来设置测试主题.多年来,我个人的经验是,它通常不值得.在每个测试中保存几行可能看起来很有吸引力,但最终它确实在各个测试之间创建了耦合,使得套件更加脆弱. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 祝贺敏捷中国2009胜利召开——[转]老大的邮件
- 如何在有效的XML文档中定义HTML实体引用?
- u-boot1.1.6移植到Nand Flash(即从sbc2410的NandFlash启动
- Fix warning C4668
- c# – 在使用Oracle时如何使用Fluent NHibernate实现批量提
- react-native获取设备信息组件(react-native-device-info)
- xml中的<![CDATA[]]>和转义字符
- ruby-on-rails – 如何在Openstruct对象上使用“each”?
- 高性能IO设计的Reactor和Proactor模式
- 如何在字符oracle之后获取字符串