我在XCode中有一个只配置了Test的模式。这个架构指向一个具有我所有测试的目标(这是OS X的Cocoa Unit Testing Bundle目标)。
所以,我执行Command + U来运行所有这些测试,它运行正常。但是,一些测试需要访问本地化资源。我将这些资源添加到我的目标中,甚至检查生成的二进制文件,其中包含本地化资源。
但是,代码没有看到资源,因此当任何测试执行NSLocalizedString时,它会返回一个键,而不是本地化的字符串。
我需要做些什么来让测试看到这些资源?
答案 0 :(得分:5)
这个问题的发布日期有点旧,但我遇到了同样的问题。我在一篇描述这个问题的博客上发现了这篇精彩的文章,并且有一个很好的解决方案。
他有两个解决方案,第一个(对我不起作用):
替换
[NSBundle mainBundle]
与
[NSBundle bundleForClass:[self class]]
第二个解决方案(使用OCMock非常好):
static id _mockNSBundle;
+(void)setUp {
_mockNSBundle = [OCMockObject niceMockForClass:[NSBundle class]];
NSBundle *correctMainBundle = [NSBundle bundleForClass:[self class]];
[[[[_mockNSBundle stub] classMethod] andReturn:correctMainBundle] mainBundle];
}
+(void)tearDown {
[_mockNSBundle stopMocking];
_mockNSBundle = nil;
}
希望这可以帮助将来检查这篇文章的人。