gpt4 book ai didi

ios - OCMock 在自定义 isEqual 实现上期望和调用 isEqual 时失败

转载 作者:行者123 更新时间:2023-11-29 03:09:40 27 4
gpt4 key购买 nike

考虑以下代码

OCMockObject *mock = [OCMockObject mockForClass:[NSObject class]];
[[[mock expect] andReturnValue:OCMOCK_VALUE((BOOL){YES})] isEqual:[OCMArg any]];
[mock isEqual:[NSObject new]];
[mock verify];

谁能告诉我为什么这会失败

test failure: -[NSObject_tests testIsEqualIsCalled] failed: OCMockObject[NSObject]: expected method was not invoked: (null)

这实际上没有任何意义。我尝试使用 andReturn: 而不是 andReturnValue: 但仍然没有。

最佳答案

expect 返回 OCMockRecorder 的实例。 OCMock 通过拦截 OCMockRecorder 未实现的方法来工作。因此,您无法真正模拟由 NSProxyNSObjectOCMockRecorder 定义的方法。您将通过此测试获得相同的结果:

-(void)testSomething {
id mock = [OCMockObject mockForClass:[NSObject class]];
[[[mock expect] andReturn:OCMOCK_VALUE((int){2})] hash];
[mock hash];
[mock verify];
}

如果这不仅仅是一个学术练习,而且您想实际测试一个自定义的 isEqual: 实现,则没有理由模拟它。只需直接使用测试中应该匹配和不应该匹配的对象调用 isEqual: 即可。

关于ios - OCMock 在自定义 isEqual 实现上期望和调用 isEqual 时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22360695/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com