我正在使用Kiwi来测试一些类,我需要存根一个类方法只是为了返回一个伪文件路径。 我知道我可以解决暴露一些路径属性或创建一个仅用于测试的子类,但我更喜欢只保留一个类和存根一些方法。
这是测试:
it(@"return the full list of POS", ^(){
NSString *sample_data_path = [[NSBundle bundleForClass:[self class]] pathForResource:@"sample_pos" ofType:@"plist"];
Class p = [PointOfSale class];
[p stub:@selector(sampleDataPath) andReturn:sample_data_path];
NSArray *allPos = [p findAll];
[[theValue([allPos count]) should] equal:theValue(100)];
});
我很困惑,因为这个测试通过并且失败,一次成功,一次失败。 没有任何“before_each”或其他正在运行的测试...
有人有同样的问题吗?答案 0 :(得分:0)
我找到了这个问题的原因。
原始类和存根类中的方法sampleDataPath
返回应该位于不同bundle(mainbundle和test bundle)中的文件路径。
但即使是"生产"文件被复制到测试包中,因此我们在同一个包上有两个同名的文件,因此测试结果是不可预测的;)
所以....如果您有这样的问题,请仔细检查您的文件名!