2016-04-22 18 views
0

Rspecを使用して作成アクションで投稿を送信しようとしていますが、単純なコントローラロジックがあります。これはapiアプリです、私は私のrspecを実行し、それは422ステータスで返されます。私は仕様がコントローラに情報を送信しているかどうかを調べようとしています。これらは、問題のコントローラ/仕様です。どのようにして情報をcreateメソッドに挿入しますか?これまでのところ、すべてのチュートリアルでは私と同じ構文を使用しているようです。Rspecを使用して作成メソッドに投稿を送信

は、私の工場でハードコーディングさUSER_IDを無視し、事前に感謝はまだ

#post_controller  
def create 
    if User.exists?(params[:user_id]) 
    @post = Post.new(post_params) 
    @post.save 
    render json: @post, status: 200 
    else 
    render status: 422 
    end 
end 

#spec 
it "saves a new post in the database" do 
    attrs = attributes_for(:post) 
    post :create, post: attrs 
    expect(response.status).to eq(200) 
end 

#factory 
FactoryGirl.define do 
factory :post do 
    title "This is a new title" 
    body "This is the body" 
    user_id 1 
end 

答えて

0

たぶんあなたparams[:post][:user_id]user_idある工場を学習し、依存関係のものを固定しますか?

+0

これは私のポストパラメータに含まれています – Byrd

+0

はい、post_paramsには届かないので、User.exists?(params [:user_id]) – Ursus

+0

の場合はエンドポイントにuser_idも渡します。エンドポイントを手動で正常に動作します。 – Byrd

関連する問題