gpt4 book ai didi

ios - 使用 OCMockito 模拟无效的方法

转载 作者:行者123 更新时间:2023-12-01 17:51:34 24 4
gpt4 key购买 nike

在使用 OCMockito 时,以下效果很好:

DSAPIManager *mockAPIManager = mock([DSAPIManager class]);
[given([mockAPIManager initWithBaseURL:[mockAPIManager baseURL]]) willReturn:[DSAPIManager sharedAPIManager]];

但是,当我在具有多个参数的方法上尝试相同的操作时(请参见下面的代码),我收到“参数类型 'void' 不完整”编译器错误。
DSAPIManager *mockAPIManager = mock([DSAPIManager class]);
[given([mockAPIManager setLoginCredentialsWithEmail:@""
password:@""]) willReturn:@""];

有谁知道这样做的正确方法?

编辑

我提出这个问题的初衷是解决在尝试以下操作时出现编译器错误的问题:
[given([mockAPIManager setLoginCredentialsWithEmail:@"" password:@""]) willDo:^id(NSInvocation *invocation) {
// Mock implementation goes here
}];

我试图模拟的方法的方法签名是:
- (void)setLoginCredentialsWithEmail:(NSString *)email password:(NSString *)password;

我实际上想要做的是模拟 void 的实现。方法。 (给定一个 void 方法,用一个 block 模拟该方法的实现。出于我的目的,该方法返回一个完成 block ,它接受两个参数。我想构造这两个参数,然后在里面运行完成 block 模拟出来的实现 block 。)

最佳答案

现在你可以像这样使用 givenVoid

[givenVoid([mockAPIManager setLoginCredentialsWithEmail:@"" password:@""]) willDo:^id(NSInvocation *invocation) {
// Mock implementation goes here
}];

关于ios - 使用 OCMockito 模拟无效的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29043188/

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