2014-09-25 7 views
5

Ich entwickle ein Rest API und teste es mit Behat und dem mink-selen2-Treiber (zum ersten Mal). Aus Sicherheitsgründen muss jeder Aufruf einen Apikey im Anforderungsheader enthalten.Wie setze ich einen Anfrage Header in Behatt Tests?

Mein Problem ist, kann ich nicht die Überschrift festlegen. Mein Test sieht wie folgt aus:

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 

Aber ich halte einen 403.

Alle Lösungen zu bekommen?

Antwort

2

In Selen ist es unmöglich. Brauchen Sie dies auf anderen Treiber, wie guzzle testen

Nach meinem Wissen, Selen-Treiber führen Chrom, aber nicht, wie es funktioniert. Vorschlag zur Überprüfung der Verwendung anderer Treiber wie guzzle, wo Sie Header setzen können, ist eine Antwort, meiner Meinung nach.

Nein, ich fand Sie könnten zusätzlich andere Option. Es wird empfohlen, einen Proxy zu verwenden, um den vom Browser generierten Anforderungen zusätzliche Header hinzuzufügen.

dieses i gefunden Dazu * http://wiremock.org/

+1

Dies ist nicht eine Antwort auf die Frage liefert. Um einen Autor zu kritisieren oder um Klärung zu bitten, hinterlasse einen Kommentar unter seinem Beitrag - du kannst deine eigenen Beiträge jederzeit kommentieren, und sobald du genügend [Reputation] (http://stackoverflow.com/help/whats-reputation) hast, wirst du das tun in der Lage sein [jeden Beitrag kommentieren] (http://stackoverflow.com/help/privileges/comment). – DBD

+0

@DBD revidieren die Ausgangsvoraussetzungen ist eine Art Lösung. Nach meinem Wissen, Selen-Treiber führen Chrom, aber nicht, wie es funktioniert. Proposition Treiber verwenden, andere überprüfen wie verputzen, wo Sie Header festlegen können eine Antwort, meiner Meinung nach. Besonders dort, wo er die Prüfung RESTApi - ich bin das gleiche zu tun, aber aufgrund dieser Einschränkung verwenden i verputzen. – timiTao

0

Sie die behatch Paket verwenden sollten, die einen behatch/rest Kontext enthält.

Allerdings sollte der Selen-Treiber nur dann verwendet werden, wenn Sie speziell einen Browser, der Javascript zum Beispiel benötigen. Wenn Sie in diesem Fall einen API-Endpunkt testen, wird die Verwendung eines Browsers Sie nur verlangsamen und keinen Vorteil bringen.

0

Es ist möglich, Restler zu verwenden, ein Mikro-Framework, das bei RESTful-API-Tests in Behat helfen kann. Es unterstützt Verhalten Driven API Tests mit Behath und Guzzle. Hier

ist das Beispiel:

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

Hier ist ein weiteres Beispiel von 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" 
Verwandte Themen