假设我在数据库中有一些页面slu g,如果页面返回标题状态代码200,我想与Behat一起检查。
这意味着我希望有一个测试(功能)可以检查多个页面,但是我在努力解决这个问题。
现在我正在使用这样的东西:
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类,并尝试存储例如私有变量中的所有页面,然后尝试在该功能的下一步中访问它,但这似乎不起作用。
答案 0 :(得分: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 Outlines。
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 |