2014-09-25 102 views
5

我正在开发Rest API,并用Behat和mink-selenium2-driver(第一次)测试它。为了安全起见,每个调用都需要在请求头中包含apikey。如何在behat测试中设置请求标头?

我的问题是,我不能设置头。我的测试是这样的:

Given I add "X_ApiKey" header equal to "test" 
When I send a GET request to "/notice" 
Then the response status code should be 200 

但我不断收到一个403

任何解决方案?

回答

2

在硒是IMPOSIBLE。 需要在其他驱动程序上测试这个,比如guzzle

据我所知,硒驱动程序导致铬,但不是它是如何工作的。在我看来,检查使用其他驱动程序如guzzle,在哪里可以设置标题是一个回答。

没有我发现你可以附加其他选项。建议您使用代理向浏览器生成的请求注入额外的头文件。

要做到这一点,我发现 * http://wiremock.org/

+1

这并不提供答案的问题。要批评或要求作者澄清,在他们的帖子下留下评论 - 你总是可以评论你自己的帖子,一旦你有足够的[声誉](http://stackoverflow.com/help/whats-reputation),你会能够[评论任何帖子](http://stackoverflow.com/help/privileges/comment)。 – DBD 2014-11-13 13:38:02

+0

@DBD修改开始的假设是种解决方案。据我所知,硒驱动器导致铬,但不是如何工作。 命题检查的利用他人司机喜欢狂饮,在这里你可以设置头是一个答案,在我看来。尤其是他在测试RESTApi的时候 - 我也是这样做的,但是由于这个限制,我使用了GUZZLE。 – timiTao 2014-11-20 10:14:44

0

您应该使用behatch包,其中包括一个behatch/rest上下文。

然而,硒司机应该只当你特别需要一个浏览器,为JavaScript例如使用。在这种情况下,当您正在测试API端点时,使用浏览器只会让您放慢速度,而不会带来任何好处。

0

它可以使用Restler,微架构,可以在贝哈特的RESTful API测试帮助。它支持行为使用Behat和Guzzle驱动的API测试。

这里是例子:

Given that "X_ApiKey" header is set to "test" 
When I request "/notice" 
Then the response status code should be 200 

这里是negotiation-format.feature file另一个例子:

Scenario: One with more `q` should be selected, q = 1 when not defined 
    Given that "Accept" header is set to "application/json;q=0.8,application/xml" 
    When I request "/examples/_003_multiformat/bmi" 
    Then the response status code should be 200 
    And the response is XML 
    And the type is "array"