如何绕过PHPUnit中的模具

时间:2019-04-15 14:47:52

标签: php unit-testing phpunit

我想绕过die或类似的PHPUnit测试用例。我有一个只有一个公共方法 start()的类,该方法立即被调用,并且检查请求是否可取。如果不是,则从脚本中执行退出并显示消息。我想测试该课程,但是我得到了睡眠脚本小子!这对我来说完全可以理解。

我很累使用 new 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!

0 个答案:

没有答案