Асинхронный тест Киви повышает EXC_BAD_ACCESS

У меня есть тест на киви. Один раз за 4 запуска возникает исключение EXC_BAD_ACCESS. Что может быть причиной этого?

Останавливается в середине первого асинхронного теста с expectFutureValue вызывается. Что может пойти не так? Это тест:

SPEC_BEGIN(NetworkTest)

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

context(@"context", ^{

    __block id origin = nil;
    __block int x = 0;
    __block AFJSONRequestOperation *operation;

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

        origin = nil;

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

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

        [operation start];

        });

        afterEach(^{
            origin = @"";
            operation = nil;
        });



        it(@"should be not nil", ^{

            [[expectFutureValue(origin) shouldEventuallyBeforeTimingOutAfter(3.0)] shouldNotBeNil];

        });


        it(@"should set x to 1", ^{
            [[expectFutureValue(theValue(x)) shouldEventuallyBeforeTimingOutAfter(3.0)] equal:theValue(1)];
        });


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

            [[expectFutureValue(origin) shouldEventuallyBeforeTimingOutAfter(3.0)] equal:@"10.1.48.223, 194.50.118.230" ];
        });




    });

});


SPEC_END

Один раз за 4 запуска возникает исключение EXC_BAD_ACCESS. Что может быть причиной этого?

Более подробная информация: STACK TRACEСостояние крушения БОЛЬШОЕ ИЗОБРАЖЕНИЕ XCODE

Я также изменил evaluate метод для нулевой проверки:

- (BOOL)evaluate 
{
    if (self.subject == nil) {
        NSLog(@"The subject is NIL");
    }
    /** handle this as a special case; KWValue supports NSNumber equality but not vice-versa **/
if ([self.subject isKindOfClass:[NSNumber class]] && [self.otherSubject isKindOfClass:[KWValue class]]) {
        return [self.otherSubject isEqual:self.subject];
    }
    return [self.subject isEqual:self.otherSubject];
}

и это журнал результатов, КОГДА ОТКАЗ НЕ ПРОИСХОДИТ: (Сам тест не пройден, но программа работает хорошо)


Тестовый пример '-[NetworkTest TheCallToTheExternalService_Context_ShouldReturnAnIPAddress]' запущен. 2013-06-04 11:24:24.509 otest[8689:303] Субъект NIL

/Users/.../KiwiTests/BMNetworkManagerTests.m:81: error: - [NetworkTest TheCallToTheExternalService_Context_ShouldReturnAnIPAddress]: 'Вызов внешней службы, контекст, должен возвращать IP-адрес' [FAILED], ожидается, что он равен "10.1.48.23, 194.50.118.230", получил"10.1.48.252, 194.50.118.230"


0 ответов

Другие вопросы по тегам