无法在PHPUnit Coverage中访问PHPUNIT_SELENIUM_TEST_ID cookie

时间:2013-03-05 11:30:25

标签: selenium phpunit

要使用phpunit_coverage.php,我需要将auto_prepend_file中的auto_append_filephp.ini属性设置为指定的文件prepend.phpappend.php。在两个脚本中都会检查cookie以确保测试正在运行:

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

问题是这个cookie保存为localhost的cookie,而不是webserver的cookie。所以当检查时,它没有设置,xdebug也没有启动。

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

情况显示在此处:

firefox cookies manager

1 个答案:

答案 0 :(得分:1)

类似的问题。我首先想到了一个域名问题,因为经过测试的网站是在虚拟主机上。

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

我的解决方法是在我的测试用例中覆盖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;
}

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