我想为iOS应用程序编写一个使用RestKit
的静态库 - 但RestKit
调用在静态库的单元测试中不起作用。
我几乎可以肯定我在做一些完全愚蠢的事情,但我无法弄清楚这是什么。
在iOS应用程序中使用静态库,并在iOS模拟器中运行它,可以根据需要运行。
是否需要做一些事情才能使RestKit
在静态库中工作而不是在iOS应用程序中工作?
我已经创建了一个示例Xcode 4项目here。
调用我的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
调用不起作用,也没有可见的错误。
更新:对于那些有兴趣做类似事情的人,您可能还想查看Daniel Jalkut的RSTestingKit。从本质上讲,它们是一些类,它们在其他一些方面提供了这里提供的解决方案。
答案 0 :(得分:2)
您也曾在Restkit列表中提出此问题;我分叉了你的项目https://github.com/dbarros/RestKitStaticLibraryTest并为你解决了这个问题:
第二个pull req https://github.com/dbarros/RestKitStaticLibraryTest/pull/2添加了runloop。其中,看看这里的答案,Josh Caswell和我在一起思考。
由于Josh已经正确地使用解决方案诊断出问题并将其发布到上面,并且我已经提交了修复,因此我只是提到了这个问题,因为修复的拉取请求。
答案 1 :(得分:1)
在等待某事发生时休眠线程可能不会有所帮助,但你可以尝试几次运行循环:
- (void)testExample
{
[MyLib testRestKit];
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:25]];
}
我还没有真正深入研究这一点,以确信它会有所帮助(或解释原因,如果确实如此),但值得一试。