如何检查Behat中多个页面的标题状态代码?

时间:2015-05-20 08:18:41

标签: php unit-testing behat acceptance-testing

假设我在数据库中有一些页面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类,并尝试存储例如私有变量中的所有页面,然后尝试在该功能的下一步中访问它,但这似乎不起作用。

1 个答案:

答案 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           |