Question

This link shows how to capture an argument of a mock object using Kiwi.

Is there a way to capture arguments of static method calls? It seems to me that this only work with instance methods.

Était-ce utile?

La solution

Considering that the same message dispatching mechanism is used for both instance and class methods, you can safely spy on class methods.

@interface MyObject: NSObject
+ (void)doNoOpWithObject:(NSObject*)obj;
@end

@implementation MyObject
+ (void)doNoOpWithObject:(id)object {}
@end


SPEC_BEGIN(StaticSpy)
it(@"captures static method arguments", ^{
    KWCaptureSpy *spy = [MyObject captureArgument:@selector(doNoOpWithObject:) atIndex:0];
    [MyObject doNoOpWithObject:@18];
    [[spy.argument should] equal:@18];
});
SPEC_END
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top