Есть ли способ установить cookie во время теста, используя PHPUnit_Extensions_SeleniumTestCase? - PullRequest
1 голос
/ 27 января 2012

У меня есть приложение, которое использует внешнюю службу через 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 ]

1 голос
/ 28 января 2012

Завершено использованием 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);
0 голосов
/ 28 января 2012

Документация Selenium имеет createCookie(), и он указан как метод в PHPUnit_Extensions_SeleniumTestCase.Из документов вы можете использовать следующее, чтобы установить для login cookie значение frank.wilson на пять минут.

$this->createCookie('login=frank.wilson', 'max_age=600');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...