2014-09-25 72 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"