Я работаю над пользовательской сетевой библиотекой и пишу для нее несколько тестовых примеров. Я не уверен, как это сделать.
У меня есть RequestObject, который является подклассом NSOperation.
@interface RequestOperation : NSOperation @property (nonatomic, strong) NSURLRequest *URLRequest; @property (nonatomic, strong, readonly) NSURLResponse *URLResponse; @property (nonatomic, strong, readonly) NSError *connectionError; @property (nonatomic, strong, readonly) NSData *responseData; -(id)initWithURLRequest:(NSURLRequest*)request; @end
В реализации у меня есть частная категория с NSURLConnection.
Я хочу написать тестовый пример, чтобы проверить, существует ли URLResponse после отправки запроса.
-(void)testIfResponseExist { NSURL *url = [[NSURL alloc] initWithString:@"https://google.com"]; NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url]; myRequest = [[RequestOperation alloc] initWithURLRequest:request]; [myRequest start]; [self WaitFor:1]; XCTAssertNotNil(myRequest.URLResponse, @"Response should not be nil"); }
Является ли этот способ модульного тестирования правильным?
Теперь это отправка фактического запроса на сервер. Однако я также могу заглушить NSURLConnection и отправить фиктивный ответ. Но я не уверен, каким путем мне идти. Каковы плюсы и минусы фиктивного объекта?