Как обойти плашку в PHPUnit - PullRequest
0 голосов
/ 15 апреля 2019

Я хочу обойти die или что-то подобное в тестовом примере PHPUnit. У меня есть класс только с одним открытым методом start () , который немедленно вызывается, и это проверка желательна. Если нет, то выход из скрипта выполняется с сообщением. Я хочу протестировать этот класс, но я получил свое сообщение , спи детишки со сном! , что совершенно понятно для меня.

Я устал делать отражения класса с новым ReflectionClass () , но без эффекта. Всегда заканчивается сообщением о выходе, как указано выше.

Код VHManager (основной класс приложения)

начало ()

    public function start()
    {
        if(!$this->isDesirable()) $this->stop('go sleep script kiddies!');

        $this->setDebugMode();

        $this->validateVirtualHostName();
        $this->validateOperatingSystem();

        if($this->operatingSystem && $this->virtualHostName){
            $this->exec();
        }

        $this->setSessionStatus();
        $this->goBack();
    }

остановка ()

    private function stop($message = '')
    {
        exit($message);
    }

setSessionStatus ()

    private function setSessionStatus()
    {
        session_start();
        $_SESSION['status'] = $this->status;
    }

Код VHManagerTest (тестовый класс основного приложения)

getMethod ()

    protected static function getMethod($name)
    {
        $class = new ReflectionClass(new VHManager());
        $method = $class->getMethod($name);
        $method->setAccessible(true);

        return $method;
    }

testSetterSessionStatus ()

    public function testSetterSessionStatus()
    {
        $setSessionStatus = self::getMethod('setSessionStatus');
        $this->assertTrue(isset($_SESSION['status']));
    }

Я ожидаю прохождение теста, но фактическое значение:

Process finished with exit code 0
go sleep script kiddies!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...