2011-12-05 4 views
1

のRails 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.urlhttp://localhost/controller?a=b

である私は、URLのSi中のパラメータを持っている必要はありません。実際のシナリオ(外部テスト)では、URLはセキュリティ署名の一部です。

私の質問は、ブラウザ(またはCURL)のPOSTと同じように動作するのではなく、rspec postがパラメータをURLに追加する理由です。

答えて

0

私はまだこれに対する答えは見つけられませんでしたが、ここで私のユニットテストがうまくいくように問題を解決する方法があります。ここでは、コードは次のとおりです。

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

    # check signature 
    # ... 
end 
0

私は、これは少し古いです知っているが、私はそれは奇妙なあなたがポストを使用していることがわかります。新しいアクションを。一般的に、newはフォームを表示するので、 'get:new'を、作成テストではpostを使用します。 'post:create、params = {blah:blah}'

あなたのルートが新しいかどうかを確認してください。

+0

私はあなたの意見を取ります。問題のコードは一例です。問題は本当です! – Khash

関連する問題