2017-07-27 20 views
-1

すべて!rspecで正しく入力してください

私はそのように、Railsの5.1.2 APIをテストするためにRSpecのからPUT/PATCH要求を作成する方法を知りたい:

ActionController :: UrlGenerationError:

describe 'PUT /users/:id' do 

    context '# check success update' do 
    it 'returns status code 204' do 
     put 'update', params: { user: { id: 3, email: '[email protected]'} } 
     expect(response).to have_http_status(204) 
    end 
    end 
end 

は、次のエラーを得ました

No route matches {:action=>"update", :controller=>"users", :user=>{:id=>3, :email=>"[email protected]"}} 

ルートはOKです:

Prefix Verb URI Pattern   Controller#Action 
users GET /users(.:format)  users#index 
     POST /users(.:format)  users#create 
    user GET /users/:id(.:format) users#show 
     PATCH /users/:id(.:format) users#update 
     PUT /users/:id(.:format) users#update 
     DELETE /users/:id(.:format) users#destroy 

答えて

0

Rails 5ので、あなたはparamsオプションを提供する必要がありますとiduserのparamsの外でなければなりません:

describe 'PUT /users/:id' do 
    context '# check success update' do 

    before do 
     put 'update', params: { id: 3, user: { email: '[email protected]'} } 
    end 

    it 'returns status code 204' do 
     expect(response).to have_http_status(204) 
    end 
    end 
end 
+0

イゴール、私は自分でそれを見つけることができますどのように、私は、ドキュメントに意味します。私はapi.rubydoc、レールガイドを試してみたが、ドキュメントに関する情報は見つけられなかった。マジックドキュメンテーション;)。あなたの経験を共有してください:ドキュメントを見つけるための「レールの道」は何ですか?そしてそのような問題を解決しますか? – fernal9301

+0

@ fernal9301:「ユーザーハッシュの外部のID」はちょうど常識です。これがレールの仕組みです。あなたはルート内の 'PUT/users /:id(。:format)'を見ていますか?これは 'params [:user] [:id]'ではなく、 'params [:id]'が必要であることを示しています。単一のドキュメントページまたはガイドは存在しない可能性があります。構造化された知識が必要です。良いレールブックを手に入れよう。 –

+0

@ fernal9301:そして、 "paramsキーを使ってパラメータを渡す必要があります" - それは現在のバージョンのレールガイドです:) http://guides.rubyonrails.org/testing.html#functional-tests-for-あなたのコントローラ –

関連する問題