2013-05-30 1 views
1

Я применил пример от Mocking Network Requests With OHHTTPStubs. Unfotunately я столкнулся EXC_BAD_ACCESS исключение при совпадении мой результат в строке:Почему kiwi matcher вызывает исключение при сопоставлении?

[[expectFutureValue(origin) shouldEventuallyBeforeTimingOutAfter(3.0)] equal:@"111.222.333.444"]; 

ли кто-нибудь сталкивался с такой проблемой? Что может быть возможным решением?

Вот полный код:

#import "Kiwi.h" 
#import "AFNetworking.h" 
#import "OHHTTPStubs.h" 
#import "OHHTTPStubsResponse.h" 

SPEC_BEGIN(NetworkTest) 

describe(@"The call to the external service", ^{ 

    beforeEach(^{ 
     [OHHTTPStubs addRequestHandler:^OHHTTPStubsResponse*(NSURLRequest *request, BOOL onlyCheck){ 
      return [OHHTTPStubsResponse responseWithFile:@"test.json" contentType:@"text/json" responseTime:1.0]; 
     }]; 
    ); 

    it(@"should return an IP address", ^{ 

     __block NSString *origin; 
     NSURLRequest* request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://httpbin.org/ip"]]; 

     AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { 
      origin = [JSON valueForKeyPath:@"origin"]; 
     } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON)  { 
      // no action 
     }]; 

     [operation start]; 

     [[expectFutureValue(origin) shouldEventuallyBeforeTimingOutAfter(3.0)] equal:@"111.222.333.444"]; 

    }); 

}); 

SPEC_END 
+0

Как это Объявлена ​​и назначена переменная 'origin'? –

+0

Я только что добавил полный код к вопросу –

+0

Это NSString *. Я также пробовал его как (id), но с тем же результатом. –

ответ

1

тест не находит файл test.json так он возвращает так, поэтому вы получаете ноль.

Создайте файл test.json в той же папке, что и ваш тестовый файл, и поместите тело, которое вам нужно, чтобы просмотреть пробный проход или выйти из строя.

Чтобы увидеть тест не в состоянии

{ "origin" : "1.2.3.4"} 

Чтобы увидеть пройти тест

{ "origin" : "111.222.333.444"} 

// Примечание добавить обработчик запроса устарел следующий будет работать

[OHHTTPStubs stubRequestsPassingTest:^BOOL(NSURLRequest *request) { 
    return YES; // Stub ALL requests without any condition 
} withStubResponse:^OHHTTPStubsResponse*(NSURLRequest *request) { 
    // Stub all those requests with our "response.json" stub file 
    return [OHHTTPStubsResponse responseWithFile:@"test.json" contentType:@"text/json" responseTime:1.0]; 
}];