#typhoon
#тайфун
Вопрос:
Я создаю фабрику внутри testcase
(TyphoonComponentFactory*)integrationTestFactory
{
static TyphoonComponentFactory* factory;
static dispatch_once_t onceToken;
dispatch_once(amp;onceToken, ^
{
factory = [[TyphoonBlockComponentFactory alloc] initWithAssemblies:@[
[MainAssembly assembly],
[Kernel assembly],
[NetworkComponents assembly],
[PersistenceComponents assembly]
]];
//Other config here. . .
TyphoonConfigPostProcessor *configurer = [TyphoonConfigPostProcessor configurer];
[configurer useResourceWithName:@"testConfig.properties"];
[factory attachPostProcessor:configurer];
//this may be necessary
[factory makeDefault
});
return factory;
}
Затем доступ к нему
- (void)setUp
{
[super setUp];
factory_instance = [LoginTest integrationTestFactory];
}
Наконец, доступ к сборке выдает значение ошибки для config ключ не настроен
DAO *dataManager = [(DaoAssembly*)factory_instance DAO];
Сборка выглядит следующим образом
-(id)DAO {
return [TyphoonDefinition withClass:[DAO class] configuration:^(TyphoonDefinition* definition)
{
[definition useInitializer:@selector(shareManager)];
[definition injectProperty:@selector(apikey) with:TyphoonConfig(@"api.key")];
[definition injectProperty:@selector(dataParser) with:[self dataParser]];
definition.scope = TyphoonScopeSingleton;
}];
}
Ответ №1:
Я не могу воспроизвести то, что вы испытываете, что подтверждается следующим тестовым примером.
Пожалуйста, попробуйте этот простой пример для себя — возможно, он прольет некоторый свет на то, в чем проблема.
SomeProperties.properties:
damsels.rescued=12
Knight.h /.m:
@interface Knight : NSObject
@property(nonatomic) NSUInteger damselsRescued;
@end
MyAssembly.m:
- (id)knight
{
return [TyphoonDefinition withClass:[Knight class] configuration:
^(TyphoonDefinition *definition) {
[definition injectProperty:@selector(damselsRescued)
with:TyphoonConfig(@"damsels.rescued")];
}];
}
IntegrationTests.m:
@interface IntegrationTests : XCTestCase
{
TyphoonComponentFactory *_factory;
}
@end
@implementation IntegrationTests
(TyphoonComponentFactory *)integrationTestFactory
{
static TyphoonComponentFactory *factory;
static dispatch_once_t onceToken;
dispatch_once(amp;onceToken, ^{
factory = [[TyphoonBlockComponentFactory alloc] initWithAssemblies:@[
[MyAssembly assembly],
]];
//Other config here. . .
TyphoonConfigPostProcessor *configurer = [TyphoonConfigPostProcessor configurer];
[configurer useResourceWithName:@"SomeProperties.properties"];
[configurer useResourceWithName:@"SomeOtherProperties.properties"];
[factory attachPostProcessor:configurer];
[factory makeDefault];
});
return factory;
}
- (void)setUp
{
_factory = [IntegrationTests integrationTestFactory];
}
- (void)testPropertiesAreSet
{
Knight *knight = [(InfrastructureComponentsAssembly *) _factory knight];
XCTAssertEqual(knight.damselsRescued, 12);
}
@end
Комментарии:
1. проблема решена,, ошибка возникла из-за того, как был настроен файл pod с добавлением typhoon как к основной, так и к тестовой цели.