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ファイルで作成されていますが、コントローラで印刷されます。
を作成していない場合、それはあなたにエラーを与える
、それはこのようなものであるべきだと思います実際にユーザーを作成します。有効な電子メールなどの検証があるかどうかは不明です。 –create!
を使用して@MirzaMemicああ申し訳ありませんが、入力ミス。実際にはコードは 'User.create(email:" myemail ")' – myggul
ですが、それはユーザーを作成しますか?あなたはチェックしましたか?コンソールに入力し、それが真を返すかどうかを確認してください。 –