3

要使用phpunit_coverage.php我需要在指定的文件auto_prepend_file和. 在这两个脚本中,都会检查 cookie 以确保测试正在运行:auto_append_filephp.iniprepend.phpappend.php

if ( isset($_COOKIE['PHPUNIT_SELENIUM_TEST_ID']) &&

问题是这个 cookie 被保存为 localhost 的 cookie,而不是 web 服务器的。所以当它被选中时,它没有被设置并且 xdebug 没有启动。

Selenium 和 webserver 位于不同的机器上,这可能是导致此错误的原因吗?

此处显示情况:

火狐饼干管理器

4

1 回答 1

1

类似的问题。我起初认为是域问题,因为测试的网站位于虚拟主机上。

但我发现调用$this->url('some_url')似乎默默地删除了PHPUNIT_SELENIUM_TEST_IDcookie。

url()我的解决方法是在我的测试用例中覆盖该方法,以便在url()调用时重置 cookie。

protected function url($url =null)
{
    try {
        $cookie = $this->cookie()->get('PHPUNIT_SELENIUM_TEST_ID');
    }
    catch (Exception $e) {}

    $result = parent::url($url);

    if (isset($cookie)) {
        $this->cookie()->add('PHPUNIT_SELENIUM_TEST_ID', $cookie)->set();
    }

    return $result;
}

现在已正确创建代码覆盖率文件。

于 2014-01-31T10:49:33.473 回答