objective-c - 使用 OCMockito 的存根方法
问题描述
嗨,我在测试运行时发送对象消息的方法时遇到问题,测试失败并显示此错误:
failed: caught "NSInvalidArgumentException", "*** -[NSProxy doesNotRecognizeSelector:sendMessage:] called!"
这是我的测试方法:
- (void)testSendingRequests
{
MNRequest *request = [MNRequest requestWithType:@"AUselessType"
content:@"AUselessContent"
delegate:nil
timeOut:10
userInfo:nil];
MNMessage * message = mockClass([MNMessage class]);
[given([mockMsgCenter sendMessage:message]) willDo:^id(NSInvocation *invocation) {
// Mock implementation goes here
}
NSNumber *identificationNumber = [center sendRequest:request];
verify(mockMsgCenter);
// some other code
}
解决方案
这是问题的解决方案
MNMessage * message = mockClass([MNMessage class]);
[given([mockMsgCenter sendMessage:message]) willDo:^id(NSInvocation *invocation) {
// Mock implementation goes here
NSArray *args = [invocation mkt_arguments];
MNMessage * msg = args[0];
MNPackagedRequest *pkgRequest = (MNPackagedRequest *)[args[0] content];
BOOL c1 = [msg.type isEqualToString:MNRequestMessageType];
BOOL c2 = [[pkgRequest type] isEqualToString:@"AUselessType"];
BOOL c3 = [(NSString *)[pkgRequest content] isEqualToString:@"AUselessContent"];
BOOL c4 = [[msg content] isEqual:pkgRequest];
BOOL c5 = [msg guaranteedDelivery];
BOOL c6 = ([msg ttl] == request.timeOut);
return @(c1 && c2 && c3 && c4 && c5 && c6);
}];
NSNumber *identificationNumber = [center sendRequest:request];
verify(mockMsgCenter);
推荐阅读
- reactjs - Prettier In VS Code 不断修剪代码之间的空间
- ios - 为什么我不能更改嵌套模型中的值?
- python - Python 屏幕截图
- c# - 以编程方式将粗体格式应用于 Powerpoint 文本框上的特定文本
- azure - 在 azure devops 中:将 docker 容器部署到 azure 时,如何将管道变量作为 appsettings 注入?
- amazon - 我们可以为单个帐户创建多个 mws 访问权限和密钥吗?
- android - 如何在 kotlin 中使用 amplify 从 AWS S3 中删除特定文件夹?
- python - ThreadPoolExecturor 未来永远不会完成
- linux - 如何使用 ip 和端口号打印通过/失败 telnet 结果?
- python - 在while循环中使用“下一页”