2013-03-05 18 views
3

要使用phpunit_coverage.php我需要設置php.iniauto_prepend_fileauto_append_file屬性指定的文件prepend.phpappend.php。在這兩個腳本的cookies進行檢查,以確保測試運行:無法訪問PHPUNIT_SELENIUM_TEST_ID餅乾PHPUnit中覆蓋

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

的問題是,這個Cookie會保留爲localhost的cookie,而不是Web服務器的。所以當它被選中時,它沒有被設置,並且xdebug不會啓動。

硒和網絡服務器位於不同的機器上,這可能是這個錯誤的原因?

的情況是在這裏顯示:

firefox cookies manager

+0

我發現這個問題是當我用'createCookie()'方法創建cookie時,它被分配給'localhost',所以我沒有任何訪問權限。 – 2013-03-06 04:12:18

+0

你有沒有想過這個工作?我現在擊中它。 – 2015-07-09 22:49:35

+1

@KarlZilles您是否嘗試過Jérôme解決方法?不幸的是,這是很久以前的,我不記得我是如何解決這個問題的。我現在無法訪問此代碼,我想在我離開該工作後它已被更改。我唯一記得的是我在配置中指定了主機,並可能使用它來爲給定主機顯式設置cookie。祝你好運! – 2015-07-10 06:14:02

回答

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; 
} 

現在可以正確創建代碼覆蓋率文件。