2016-12-28 8 views
0

У меня есть метод, который я хочу модульного тестирования:ИОС - Как издеваются метод с pmkpromise в качестве возвращаемого типа

- (void)fetchInfo { 
[AMKAccountService getInfo] 
.then(^(AMKInfoResponse *response) { 

    if (response.accounts.count > 0) { 
     _viewModel = [[AMKInfoViewModel alloc] initWithInfoResponse:response]; 
     [self.view setAsOfDate:_viewModel.asOfDate]; 
    } else { 
     [self.view showError:[AMKStrings feedbackForCode:@"testError"]]; 
    } 
}).catch(^(NSError *error) { 
    DLog(@"Error getting info: %@", error); 
    [self.view showError:[AMKStrings feedbackForCode:@"testError"]]; 

}); 

}

В этом методе, метод «GetInfo» делает вызов службы и возвращает ответ типа объекта PMKPromise.

Мой вопрос заключается в том, как издеваться над методом getInfo и сделать блок «then», который требуется для одного модульного теста, и блок «catch», вызываемый для другого модульного теста.

[Update] Вот GetInfo метод:

+ (PMKPromise *)getInfo { 
AMKServicesClient *client = [AMKServicesClient sharedInstance]; 

return [client GET:@"/amk-web-services/rest/info" parameters:nil].thenInBackground(^(NSDictionary *responseDictionary) { 

    return [[AMKInfoResponse alloc] initWithResponse:responseDictionary]; 
}); 

} 
+0

Можете ли вы дать определение метода 'getInfo'? Я кратко посмотрел на PromiseKit и на то, что я нашел (https://github.com/mxcl/PromiseKit/search?utf8=%E2%9C%93&q=PMKPromise) Я не могу сразу увидеть, где определяется 'then()' , Я бы предположил, что это свойство, которое возвращает блок, но мне нужно будет точно определить типы. –

+0

Спасибо за ваш отзыв Эрик. Я обновил свой вопрос и добавил метод getInfo. – user3158704

+0

Что вы пробовали? Как выглядит ваш тестовый пример? –

ответ

1

Чтобы проверить это, вы должны либо разорвать зависимость между getInfo и общей AMKServicesClient, или создать какую-то систему, которая позволяет для загрузки клиента макетных услуг, когда вызывается [AMKServicesClient sharedInstance].