- (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 SEL selectors[] = { @selector(performSyncRequestWithUri:params:), @selector(performAsyncRequestWithUri:params:completionHandler:), NULL }; for (size_t i = 0; selectors[i]; ++i) { SEL selector = selectors[i]; BOOL respondsToSelector = [obj respondsToSelector:selector]; STAssertTrue(respondsToSelector, [NSString stringWithFormat: @"Object %@ doesn't respond to selector %s", obj, sel_getName(selector)]); }