2016-07-01 4 views
0

私はrspec初心者です。質問があります。Rails Rspec、コントローラに仕様ファイルで作成したモデルデータを渡します。

- コントローラファイル

describe "POST #" do 
    it "test update holiday_type" do 
    u = User.create(email: "myemail") #edited 
    data = { 
     email: "myemail", 
     holiday_type: 1, 
    } 
    post :update_holiday, data 
    expect(assigns(:status)).to eq(true) 
    end 
end 

をテストするためのスペック - コントローラファイルに

def update_holiday 
    @status = true 
    u = User.find_by_email(params[:email]) 
    return render json: {:status => @status = params[:email]} if u.nil? 

    h = Holiday.create(user: u, holiday_type: params[:holiday_type]) 
    @status = h.valid? 

    return render json: {:status => @status} 
end 

- テスト用出力

Failure/Error: expect(assigns(:status)).to eq(true) 
    expected: true 
     got: "myemail" 

コントローラは、ユーザが使用できない理由スペックファイルで作成されましたか?

両方の環境はテストではありませんか?

User.all.sizeは、specファイルで作成されていますが、コントローラで印刷されます。

+0

を作成していない場合、それはあなたにエラーを与えるcreate!を使用して

、それはこのようなものであるべきだと思います実際にユーザーを作成します。有効な電子メールなどの検証があるかどうかは不明です。 –

+0

@MirzaMemicああ申し訳ありませんが、入力ミス。実際にはコードは 'User.create(email:" myemail ")' – myggul

+0

ですが、それはユーザーを作成しますか?あなたはチェックしましたか?コンソールに入力し、それが真を返すかどうかを確認してください。 –

答えて

1

rspecでユーザーが作成してもよろしいですか?

私はuがUser.create(「myemailを」)=というあなたは確かにしているユーザーが

関連する問題