RestKit не работает при использовании в статической библиотеке - PullRequest
0 голосов
/ 05 марта 2012

Я хочу написать статическую библиотеку, которая использует RestKit для приложения iOS - но вызовы RestKit не работают в модульных тестах статической библиотеки.

Я почти уверен, что я делаю что-то совершенно глупое, но я не могу понять, что это такое.

Использование статической библиотеки в приложении iOS и запуск ее в iOS Simulator работает как нужно.

Есть ли что-то, что нужно сделать, чтобы RestKit работал в статической библиотеке, в отличие от приложения для iOS?

Я создал пример проекта Xcode 4 здесь .

Код, вызывающий мой API, прост:

+ (void)testRestKit
{ 
    NSString* URL = @"http://0.0.0.0:3000/api";
    RKClient* client = [RKClient clientWithBaseURL:URL username:@"me@somewhere.com" password:@"password"];
    [client get:@"/users/current" delegate:nil];
}

Мой тест просто:

- (void)testExample
{
    [MyLib testRestKit];
    sleep(10);
}

Примечание: Я добавил режим сна на всякий случай, если это было время, когда модульные тесты завершатся без RestKit возможности дать вызов API. Это не помогло.

Несмотря на то, что вызов RestKit не работает, видимых ошибок также нет.

Обновление: Для тех, кто заинтересован в том, чтобы сделать что-то подобное, вы также можете попробовать RSTestingKit Дэниела Джалкута. По сути, это классы, которые обеспечивают, помимо прочего, то, что делает решение, предоставленное здесь.

Ответы [ 2 ]

2 голосов
/ 06 марта 2012

Вы также задавали этот вопрос в списке рассылки Restkit; Я раздвоил ваш проект https://github.com/dbarros/RestKitStaticLibraryTest и исправил его для вас:

Второе требование тяги https://github.com/dbarros/RestKitStaticLibraryTest/pull/2 добавляет цикл запуска. Что, глядя на ответы здесь, мы с Джошем Касвеллом думали одинаково.

Поскольку Джош уже правильно диагностировал проблему с помощью решения и опубликовал ее выше, а я уже зафиксировал исправление, я упоминаю об этом только из-за запроса на извлечение с исправлением.

1 голос
/ 06 марта 2012

Спящий поток, когда вы ожидаете, что что-то произойдет, вряд ли поможет, но вы можете попробовать запустить цикл запуска несколько раз:

- (void)testExample
{
    [MyLib testRestKit];
    [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:25]];
}

Я не достаточно подробно изучил это, чтобы быть уверенным, что это поможет (или объяснить, почему, если это так), но стоит попробовать.

...