как бы вы протестировали метод класса, который имеет побочные эффекты через self::
? таких как:классы unittest, которые используют self :: in PHP
final class Foo{
private static $effect = false;
public static function doit($arg){
if(self::effect) return;
self::check_args($arg);
self::$effect = true;
}
private function check_args($arg){
#validate and trhow exception if invalid
}
}
Я должен отправить несколько арг на Doit(), чтобы проверить это правильно проверки значения, но после первого запуска, это просто обойти его. это в основном метод инициализации для singleton, который устанавливает инициализированный флаг.
Я пока не могу позволить себе возиться с классом. Есть ли способ сделать копию/instatiate объекта таким образом, чтобы он работал с self::
?
Это недопустимый синтаксис. – Jon
Вы попробовали опцию -static-backup в PHPUnit? – SamHennessy
@SamHennessy, который, кажется, идет в правильном направлении, но я не смог найти больше информации об этом. от http://www.phpunit.de/manual/3.6/en/textui.html он перенаправляет меня на http://www.phpunit.de/manual/3.6/en/fixtures.html#fixtures.global-state, который вообще не уточняет этот флаг. Я попытался запустить тест с флагом, но он как и раньше. – gcb