If you have have a method you want to test, but it does some stuff you like for convenience, and you don’t really want to mess for the sake of testing, create with some overrides and do your testing there.
+ (void)foo:(NSURLSessionConfiguration *)sessionConfiguration { TokenManager *tokenManager = [[TokenManager alloc] init]; AccessToken *accessToken = tokenManager.accessToken; [self addAuthorizationHeaderToSessionConfiguruation:sessionConfiguration token:accessToken]; } + (void)foo:(NSURLSessionConfiguration *)sessionConfiguration token:(AccessToken *)accessToken { NSString *accessTokenHeaderValue = [NSString stringWithFormat:@"%@ %@", accessToken.tokenType, accessToken.token]; sessionConfiguration.HTTPAdditionalHeaders = @{@"Authorization" : accessTokenHeaderValue}; }
The first method is the convenient public one.
The second is the one you can test and inject other things into.
Unit testing tip – additional override – Project Management World
Jul 24, 2017 @ 22:53:40