本项目将FactoryGirl的想法引入iOS项目,它可以加载数据并解包它们为Mantle类或NSDictionary类。
由Lucas Medeiros在Codeminer42在福塔雷萨开发。
在Twitter上关注我们:@Codeminer42
#import "CMFixture.h"
#import "Kiwi.h"
SPEC_BEGIN(YourSpec)
//If you use github's Mantle library
beforeEach(^{
YourClass *yourInstance = [CMFactory buildUsingMantleClass:[YourClass class] fromFixture:@"YourClass"];
//Or
NSArray *aColletion = [CMFactory buildUsingMantleClass:[YourClass class] fromFixture:@"People"];
});
//If you don't use github's Mantle library
beforeEach(^{
NSDictionary *dictionary = [CMFactory buildUsingFixture:@"YourClass"];
//Or
NSArray *aColletion = [CMFactory buildUsingFixture:@"People"];
});
SPEC_END
之后,在您的测试项目中,您需要创建一个文件,其文件名与您的工厂名称相同(.json或.plist格式。例如:如果您的工厂名称是'People',并且您有people.json和其它people.plist文件,则将解包.json文件)
#import "CMFactory.h"
#import "Kiwi.h"
SPEC_BEGIN(YourSpec)
specify(^{
CMFactory *factory = [CMFactory forClass:[YourClass class]];
[factory addToField:@"aFieldName" value:^{
return @"www.codeminer42.com";
}];
YourClass *instance = [factory build];
[[instance.aFieldName should] equal: @"www.codeminer42.com"];
});
context(@"when using sequence method", ^{
__block CMFactory *factory;
__block NSArray *images;
beforeEach(^{
factory = [CMFactory forClass:[CMImage class]];
[factory addToField:@"url" sequenceValue:^(NSUInteger sequence) {
return [NSString stringWithFormat:@"www.github.com%d", sequence];
}];
images = [factory buildWithCapacity:3];
});
specify(^{
[[images should] haveCountOf:3];
});
specify(^{
for(NSUInteger i = 0; i < 3; i++) {
CMImage *image = [images objectAtIndex:i];
[[image.url should] equal:[NSString stringWithFormat:@"www.github.com%d", i]];
}
});
});
SPEC_END
CMFactory
需要iOS 5.x或更高版本。
与核心数据集成以使用'create'等方法
使用受MIT许可证约束。有关详细信息,请参阅LICENSE。