Объясните пожалуйста, как тестировать статические методы?

hell0w0rd

Продвинутый новичок
Почитал и офф доки, и хабр и просто тематические сайты - так и не смог разобраться.

Допустим у нас есть класс:
PHP:
class Greeting
{
    private static $prefix;

    public static function setPrefix($prefix)
    {
        self::$prefix = $prefix;
    }

    protected static function getPrefix()
    {
        return self::$prefix;
    }

    public function say($name = 'Человек')
    {
        echo self::getPrefix() . 'приветствую тебя ' . $name;
    }
}
Как оттестировать статический метод? Я понимаю что лучше без них обходится, но в реальном классе - это система кеширования и глобальные замены в классе генерирующем конфиги из файлов. Так что мне нужно чтобы это были именно статические переменные
 

WMix

герр M:)ller
Партнер клуба
PHP:
Greeting::setPrefix('-');
$this->assertEquals('-приветствую тебя b', Greeting::say('b') );
 

AmdY

Пью пиво
Команда форума
GusakovNick
проблема не в тестировании, а в том, что ты не можешь их заменить моками. Поэтому лучше пользуйся хотя бы LSB
 

hell0w0rd

Продвинутый новичок
WMix
Да, серьезная. Тесты должны быть независимы
Я добавлю метод sayBye, как мне его теперь тестировать? Он теперь зависит от того, какой из тестов выполнится первым.
 
Сверху