2011-12-05 4 views
1

레일 3, RSpec에 2 변경 : 컨트롤러 내 RSpec에 테스트에서RSpec에 POST가 URL을

을, 나는 포스트를 사용하고 있는데 일부 매개 변수를 전달 :

it "returns a job id" do 
    post :new, { :a => 'b'} 
    response.status.should == 200 
end 

이 잘 작동하고에 컨트롤러 측 그러나 컨트롤러 params[:a] is 'b'

, request.url 내가 URL의시의 매개 변수를 갖고 싶어하지 않는 http://localhost/controller?a=b

입니다 실제 시나리오 (외부 테스트)에서 URL은 보안 서명의 일부입니다.

제 질문은 rspec post가 브라우저 (또는 CURL)에서 POST와 동일한 방식으로 동작하는 대신 URL에 매개 변수를 추가하는 이유입니다.

답변

0

아직 답을 찾지 못했지만 문제를 해결하여 단위 테스트가 작동하도록했습니다. 단위 테스트를 실행할 때 간단한 바이 패스 서명 검사가 있습니다. 코드는 다음과 같습니다.

def check_signature 
    return if request.host == 'test.host' 

    # check signature 
    # ... 
end 
0

나는 이것이 약간 오래된 것으로 알고 있지만, 나는 새로운 행동을위한 게시물을 사용하고 있다는 것이 이상하다는 것을 알게되었습니다. 일반적으로 new는 폼을 보여주기 때문에 'get : new'를, create test에서는 post를 사용합니다 : 'post : create, params = {blah : blah}'.

경로를 확인하여 새로운 작업이 게시인지 확인하십시오.

+0

나는 당신의 요점을 이해합니다. 문제의 코드는 예제입니다. 문제는 현실입니다! – Khash