Я хочу изменить поведение некоторой функции, не будучи автором этой функции.Я контролирую то, что я могу попросить автора следовать некоторому шаблону, например, использовать базовый класс, использовать определенный декоратор, свойство и т. Д.
Если в Python я бы использовал декоратор, чтобы изменить поведениеmethod.
Например, моя цель: улучшить покрытие кода путем автоматического тестирования нескольких входных данных.
Псевдокод:
@implementation SomeTestSuiteClass
// If in python, I would add a decorator here to change the behavior of the following method
-(void)testSample1 {
input = SpecialProvider();
output = FeatureToTest(input);
SpecialAssert(output);
}
@end
Что я хочу: во время тестаметод testSample1
будет вызываться несколько раз.Каждый раз SpecialProvider
будет излучать разные входные данные.То же самое для SpecialAssert
, который может проверять вывод, соответствующий заданному вводу.
SpecialProvider
и SpecialAssert
будут API под моим контролем / владением (т.е. я их пишу).SomeTestSuiteClass
вместе с testSample1
будет записан пользователем (т.е. автором тестов).
Есть ли способ для Objective-C достичь "того, что я хочу" выше?