2014-09-25 2 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

셀레늄에서는 불가능합니다. 다른 드라이버 (예 : 대머리)에서 테스트해야합니다.

내 지식으로는 셀레늄 드라이버가 크롬을 사용하지만 작동 방법은 알지 못합니다. 당신이 헤더를 설정할 수있는, 지글 지글 지글 거리는 다른 운전자의 사용을 확인하라는 제안은 내 의견으로는 대답입니다.

아니요, 다른 옵션을 찾을 수 없습니다. 브라우저에서 생성 된 요청에 추가 헤더를 삽입하려면 프록시를 사용하는 것이 좋습니다.

내가 당신은 behatch/rest 컨텍스트를 포함 behatch 패키지를 사용한다 * http://wiremock.org/

+1

: 여기 negotiation-format.feature file의 또 다른 예는

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

: 여기

은 예입니다. 비평하거나 저자의 설명을 요청하려면 게시물 아래에 의견을 남기십시오. 자신의 게시물에 언제든지 댓글을 달 수 있으며 충분한 [평판] (http://stackoverflow.com/help/whats-reputation)을 얻으면 [모든 게시물에 댓글을 달 수] 있어야합니다 (http://stackoverflow.com/help/privileges/comment). – DBD

+0

@DBD 시작 가정을 수정하는 것은 일종의 해결책입니다. 내 지식으로는 셀레늄 드라이버가 크롬을 이끌지 만 작동하는 방식은 아닙니다. 머리말을 설정할 수있는 guzzle과 같은 다른 드라이버를 사용하는 것이 좋습니다. 내 의견으로는 대답입니다. 특히 그가 RESTApi를 테스트하는 곳에서는 - 나는 똑같이하고 있지만,이 제한 때문에 GUZZLE을 사용했습니다. – timiTao

0

발견이 작업을 수행합니다.

그러나 셀레늄 드라이버는 브라우저 (예 : 자바 스크립트)가 필요한 경우에만 사용해야합니다. 이 경우 API 엔드 포인트를 테스트 할 때 브라우저를 사용하면 속도가 느려지므로 어떤 이점도 가져다주지 않습니다.

0

Behat의 RESTful API 테스팅에 도움이되는 마이크로 프레임 워크 인 Restler을 사용할 수 있습니다. Behat 및 Guzzle을 사용하여 동작하는 API 테스트를 지원합니다. 이 질문에 대한 답을 제공하지 않습니다

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" 
관련 문제