Как проверить код статуса заголовка для нескольких страниц в Behat?

Допустим, у меня есть несколько слагов страниц в базе данных, которые я хотел бы проверить с Behat, если страницы возвращают код состояния заголовка 200.

Это означает, что я хочу иметь один тест (функцию), который будет проверять несколько страниц, однако я изо всех сил пытаюсь это сделать.

Прямо сейчас я использую что-то вроде этого:

Given I am on any page, I should get header status code 200

Который запускает одну функцию, и каждая логика находится внутри этой функции.

Но в идеале я хочу что-то вроде этого:

Given I go through all pages
When I check the header status for each page
Then I should get header status code 200

Есть ли способ сделать это?

Примечание. Я использую класс FeatureContext и попытался сохранить, например, все страницы в закрытой переменной, а затем пытались получить к ней доступ на следующем шаге функции, но это, похоже, не работает.

1

Решение

Для одна страница, это сделано так

Пример сценария:

  Scenario: Request and Response for single page
Given I am on "/homepage"When I send a GET request to "/cars/list_all"And the response status code should be 200

Пример файла контекста:
Вам нужно добавить метод ниже.

class FeatureContext extends MinkContext implements KernelAwareInterface
{
/**
* @When /^I send a ([^"]*) request to "([^"]*)"$/
*/
public function iSendARequestTo($method, $url)
{
$client = $this->getSession()->getDriver()->getClient();
$client->request($method, $url);
}
}

MinkContext:
Это уже существует, поэтому вы не будете трогать его.

class MinkContext extends RawMinkContext implements TranslatedContextInterface
{
/**
* Checks, that current page response status is equal to specified.
*
* @Then /^the response status code should be (?P<code>\d+)$/
*/
public function assertResponseStatus($code)
{
$this->assertSession()->statusCodeEquals($code);
}
}

За несколько страниц, вы будете использовать Контуры сценария.

  Scenario Outline: Request and Response for multiple pages
Given I am on "/homepage"When I send a <method> request to <end-point>
And the response status code should be <response-code>

Examples:
| method | end-point     | response-code |
| POST   | /api/page-one | 200           |
| PUT    | /api/page-two | 200           |
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector