У меня проблема с TyphoonPatcher, используемым в тестах интеграции. Я использую KIF для тестов интеграции. Иногда мне нужно заглушить http-клиент или класс, ответственный за сохранение данных в базе данных. Самый простой способ - использовать TyphoonPatcher.Как восстановить исправленные компоненты TyphoonPatcher
Позволяет сказать, что мне нужен патч патч рыцаря погасил рыцарь для TestCase А, для всех тестовых случаев, так что я делаю это в beforeAll обратного вызова
код отвечает за Patching компонента:
MiddleAgesAssembly* assembly = [[MiddleAgesAssembly assembly] activate];
TyphoonPatcher* patcher = [[TyphoonPatcher alloc] init];
[patcher patchDefinitionWithSelector:@selector(knight) withObject:^id{
Knight* mockKnight = mock([Knight class]);
[given([mockKnight favoriteDamsels]) willReturn:@[
@"Mary",
@"Janezzz"
]];
return mockKnight;
}];
[assembly attachPostProcessor:patcher];
Knight* knight = [(MiddleAgesAssembly*) factory knight]
И теперь в TestCase B я хочу иметь ясное состояние приложения, без каких-либо исправленных компонентов.
Проблема? Рыцарь в классе B по-прежнему заменяется другим издеваемым или заглушенным классом.
Есть ли способ вернуть патч от TestCase A?