Search code examples
objective-ctddrespondstoselector

How to test properties of class using TDD?


Why when I use method respondsToSelector: or instancesRespondToSelector: at line 43 I cannot bypass STAssertTrue?

//My test case code

- (void)testApiClass {
    //Check object
    NSString* classKey = @"Api";
    id obj = NSClassFromString(classKey);
    STAssertNotNil(obj, [NSString stringWithFormat:@"Model '%@' not found.", classKey]);
    //Check properties
    NSArray* properties =
    @[
        @"performSyncRequestWithUri::",
        @"performAsyncRequestWithUri:::",
    ];
    for (NSString* property in properties) {
        SEL propertySel = NSSelectorFromString(property);
        BOOL isRespondsToSel = [obj respondsToSelector:propertySel];
        STAssertTrue(isRespondsToSel, [NSString stringWithFormat:@"Property '%@' not found on object of class name '%@'", property, [obj class]]);
    }    
}


@interface Api : NSObject

- (NSDictionary*)performSyncRequestWithUri:(NSString *)requestUri params:(NSDictionary *)params;
- (void)performAsyncRequestWithUri:(NSString *)requestUri params:(NSDictionary *)params completionHandler:(void (^)(NSDictionary *, NSError *))completionBlock;

@end

Solution

  • The methods are called performAsyncRequestWithUri:params:completionHandler: and performSyncRequestWithUri:params: