В симфони файле 3 контроллера У меня есть функция:behat 3 норка тестирование Перенаправление
/**
* @Route("/user/registration", name="post_registration")
* @Method("POST")
* @return mixed
*/
public function postRegistration()
{
$post = $this->getAllPost();
$this->curl = $this->get('ApiClient');
$responseArray = $this->curl->post(
$this->container->getParameter('api_url') . '/users',
$post
);
if (isset($responseArray['api_key'])) {
return $this->redirectResponseWithCookie($responseArray['api_key']);
} else {
return $this->render(
static::REGISTRATION_TEMPLATE,
['errors' => $responseArray['errors']]
);
}
}
В одной части она вызывает функцию
redirectResponseWithCookie()
, который должен перенаправить страницу.
Я хочу проверить заголовок перенаправления - имеет ли он правильное значение местоположения.
У меня есть функция в классе UserRegistrationContext
class UserRegistrationContext extends BaseContext implements Context, SnippetAcceptingContext
{
/**
* @When I register successfully into the system
* @return null
*/
public function iRegisterSuccessfullyIntoTheSystem()
{
$this->canIntercept();
$this->session->getDriver()->getClient()->followRedirects(false);
// Enters his data
// Posts to www.notification.guru .
$this->session->getDriver()->getClient()
->request('POST', $this->baseUrl . '/user/registration', $this->getFormArray());
echo 'test';
}
}
класс BaseContext только есть некоторые вспомогательные функции, его конструктора inits сессии:
$driver = new GoutteDriver();
$this->session = new Session($driver);
эта часть может быть неправильно:
$this->session->getDriver()->getClient()->followRedirects(false);
Я только что взял код от behent 2.5 и попытался настроить его с помощью behat 3, но не уверен, что он правильный, но, по крайней мере, не вызывает ошибки.
Это должно остановить перенаправление, и тогда я мог бы получить заголовок ответа с
getResponseHeaders()
Но проблема в том, что он пытается перенаправить, и код не удается, потому что реальный сайт не сумели запустить еще где он перенаправляет. А также я не смог бы проверить заголовки, которые, я думаю, после реального перенаправления.
Поэтому перенаправление необходимо остановить, я думаю.
Как это сделать? Я не могу найти информацию.
Тест терпит неудачу на линии
$this->session->getDriver()->getClient()
->request('POST', $this->baseUrl . '/user/registration', $this->getFormArray());
На самом деле я вижу, что нет никакой ошибки в этом коде, я не видел, а в консоли после выполнения теста. –