无法访问PHPUNIT覆盖范围中的PHPUNIT\u SELENIUM\u TEST\u ID cookie

无法访问PHPUNIT覆盖范围中的PHPUNIT\u SELENIUM\u TEST\u ID cookie,selenium,phpunit,Selenium,Phpunit,要使用phpunit\u coverage.php我需要在php.ini中为指定的文件prepend.php和append.php设置auto\u prepend\u file和auto\u append\u file属性。在这两个脚本中,检查Cookie以确保测试正在运行: if ( isset($_COOKIE['PHPUNIT_SELENIUM_TEST_ID']) && 问题是此cookie作为本地主机的cookie而不是Web服务器的cookie保存。因此,当它被选中

要使用
phpunit\u coverage.php
我需要在
php.ini
中为指定的文件
prepend.php
append.php
设置
auto\u prepend\u file
auto\u append\u file
属性。在这两个脚本中,检查Cookie以确保测试正在运行:

if ( isset($_COOKIE['PHPUNIT_SELENIUM_TEST_ID']) &&
问题是此cookie作为本地主机的cookie而不是Web服务器的cookie保存。因此,当它被选中时,它不会被设置,xdebug也不会启动

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

情况如下:


类似的问题。我首先想到的是一个域问题,因为测试的网站位于vhost上

但是我发现调用
$this->url('some_url')
似乎会悄悄地删除
PHPUNIT\u SELENIUM\u TEST\u 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;
}

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

我发现问题在于,当我使用
createCookie()
方法创建cookie时,它被分配给
localhost
,因此我以后无法访问它。你有没有想过解决这个问题的方法?“我现在开始打了。@KarlZilles你试过Jérôme的变通方法吗?”?不幸的是,这是很久以前的事了,我不记得我是如何解决这个问题的。我现在没有任何访问此代码的权限,我想在我离开该工作后,它已被更改。我唯一记得的是,我在配置中指定了主机,并可能使用它为给定主机显式设置cookie。祝你好运!