Я хочу обойти 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!