有没有办法在测试期间使用PHPUnit_Extensions_SeleniumTestCase设置cookie?

时间:2012-01-27 14:39:49

标签: unit-testing selenium phpunit

我有一个应用程序,它通过设置到我的应用程序域的cookie来使用外部服务。在开发过程中,我手工创建了这个cookie,但在生产中,这个cookie将通过登录生成。在我为这个外部服务运行测试之前,有没有办法使用我在开发过程中设置的cookie?

我猜测我可以使用curl来自动化这一点,但我想知道我是否在PHPUnit和/或Selenium中遗漏了一些隐藏的功能或技术。

[扩展类 PHPUnit_Extensions_SeleniumTestCase ]

/**
 * Can get the current authenticated user.
 */
public function testCanGetTheCurrentAuthenticatedUser()
{
    $this->open('http://my/local/virtual/host/api/getCurrentUser');
    $json = json_decode($this->getBodyText());
    $this->assertEquals('25', $json->response->id); 

}

2 个答案:

答案 0 :(得分:1)

使用Curl结束需要进行cookie身份验证的测试。

$curl = curl_init('http://my/local/virtual/host/api/getCurrentUser');
curl_setopt($curl, CURLOPT_COOKIE, 'mycookie=authentication'); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($curl);
$json = json_decode($output);
$this->assertEquals('25', $json->response->id);

答案 1 :(得分:0)

Selenium documentationcreateCookie(),并在PHPUnit_Extensions_SeleniumTestCase中列为方法。在文档中,您可以使用以下内容将login Cookie设置为frank.wilson五分钟。

$this->createCookie('login=frank.wilson', 'max_age=600');