gpt4 book ai didi

ios - 使用 Kiwi 检查模拟对象的方法参数

转载 作者:可可西里 更新时间:2023-11-01 05:55:33 25 4
gpt4 key购买 nike

我需要以下方面的帮助:我正在为具有以下结构的客户端 API 编写一些 BDD 测试:

@protocol MyAPIClientDelegate <NSObject>
-(void)myCallbackMethod:(id)response;
@end

// BEGIN: MyAPIClientSpec.h

SPEC_BEGIN(MyAPIClientSpec)

describe(@"MyAPIClientAPI ", ^{
__block MyAPI *api = nil;
__block id delegateMock = nil;

beforeEach(^{
delegateMock = [KWMock mockForProtocol:@protocol(MyAPIClientDelegate)];
api = [MyAPI APIClientWithDelegate:delegateMock];
});

afterEach(^{
delegateMock = nil;
api = nil;
});

it(@"should return a JSON { result: 'ok', token: <SOME_TOKEN> }", ^{
[[api should] receive:@selector(myMethodCall:)];

[[[delegateMock shouldEventually] receive] myCallbackMethod:any()];

[api myMethodCall];
});
});

SPEC_END

如您在上面的代码中所见,我正在使用 any() 来检查是否至少有一个参数发送给委托(delegate)。

有没有办法定义一个函数(或 objective-c block )来检查参数?

谢谢!

最佳答案

尝试使用 capture spy :

it(@"should return a JSON { result: 'ok', token: <SOME_TOKEN> }", ^{
[[api should] receive:@selector(myMethodCall:)];

KWCaptureSpy *spy = [delegateMock captureArgument:@selector(myCallbackMethod:) atIndex:0];

[api myMethodCall];

[[spy.argument should] equal:/* ... */];
});

关于ios - 使用 Kiwi 检查模拟对象的方法参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17582040/

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