Symfony 4.2 выйдет в ноябре 2018 года. Это первая статья из серии, в которой показаны наиболее важные новые функции, представленные в этой версии Symfony.
Предоставил
Виктор Новиков
в #27807.
В приложениях Symfony функциональные тесты используют клиент на основе PHP, предоставляемый компонентом BrowserKit, для имитации браузера и выполнения HTTP-запросов. В Symfony 4.2 мы представили новые вспомогательные методы в этом клиенте, чтобы упростить действия по переходу по ссылкам и отправке форм.
Сначала помощник clickLink()
щелкает первую ссылку, содержащую данный текст (или первое кликабельное изображение, чей атрибут alt
содержит данный текст):
// Before $client->request('GET', '/'); $link = $crawler->selectLink('Login')->link(); $crawler = $client->click($link); // After $client->request('GET', '/'); $crawler = $client->clickLink('Login');
Предыдущий способ работы со ссылками (с методами selectLink()
и click()
) по-прежнему работает, и вам нужно будет использовать его в более сложных сценариях (например, когда вам нужно получить доступ к какому-либо атрибуту ссылки, прежде чем щелкнуть ее).
Другой новый помощник называется submitForm()
, который находит первую форму, содержащую кнопку с заданным текстом (или id
, value
или name
), и использует ее для отправки заданных значений полей формы:
// Before $client->request('GET', '/register'); $form = $crawler->selectButton('Sign Up')->form(); $crawler = $client->submit($form, [ 'name' => 'Jane Doe', 'username' => 'jane', 'password' => 'my safe password', ]); // After $client->request('GET', '/register'); $crawler = $client->submitForm('Sign Up', [ 'name' => 'Jane Doe', 'username' => 'jane', 'password' => 'my safe password', ]);
Предыдущий способ работы с формами (с методами selectButton()
и submit()
) по-прежнему работает, и вам придется использовать его в более сложных сценариях (например, когда вам нужно получить доступ к какому-либо атрибуту формы перед ее отправкой).
Наконец, если вы хотите запустить свои функциональные тесты в реальном браузере, а не в симулированном браузере, попробуйте Symfony Panther, последнее дополнение к экосистеме Symfony. Одним из его самых больших преимуществ является то, что он использует тот же API, что и BrowserKit, поэтому эти новые помощники могут быть доступны в Panther в ближайшее время.