我在Xcode中有一个仅配置了Test的架构。这个模式指向一个包含我所有测试的目标(这是OS X的Cocoa单元测试套件目标)。
因此,我使用Command + U运行所有这些测试,并且工作正常。但是,几次测试需要访问本地化资源。我将这些资源添加到目标中,甚至检查生成的二进制文件中是否存在本地化资源。
但是,代码看不到资源,因此当任何测试执行NSLocalizedString时,它将返回键而不是本地化的字符串。
为了让测试看到这些资源,我需要做些特别的事情吗?
这个问题的发帖日期有点旧,但是我遇到了同样的问题。我在博客上发现了这个很棒的文章,描述了这个问题,并且有很好的解决方案。
他有两个解决方案,第一个(对我不起作用):
替换
[NSBundle mainBundle]
with
[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;
}
希望这可以帮助以后查看此帖子的人。