テストフレームワークにFactoryGirlとRspecを使用しています。validates_presence_of検証があるモデルがあります。基本的なRspecフレームワークには、次のテストが含まれています。
describe "with invalid params" do
it "assigns a newly created but unsaved disease as @disease" do
# Trigger the behavior that occurs when invalid params are submitted
Disease.any_instance.stub(:save).and_return(false)
post :create, :disease => {}
assigns(:disease).should be_a_new(Disease)
end
end
編集:
diseases_controller.rb
# POST /diseases
# POST /diseases.xml
def create
@disease = Disease.new(disease_params)
respond_to do |format|
if @disease.save
format.html { redirect_to(@disease, :notice => 'Disease was successfully created.') }
format.xml { render :xml => @disease, :status => :created, :location => @disease }
else
format.html { render :action => "new" }
format.xml { render :xml => @disease.errors, :status => :unprocessable_entity }
end
end
end
private
def disease_params
params.require(:disease).permit(:name, :omim_id, :description)
end
このテストは、私のアプリケーションの動作では機能しません。間違った投稿で新しい病気を返すのではなく、エラーを返します。
Required parameter missing: disease
質問1:Rspecで返される内容を確認する方法がわかりません。このresponse
場合、オブジェクトは作成されていないように見えますか?印刷assigns(:disease)
には何も含まれていないようです。空のデータを含む正しいURLにcURL投稿を送信することで以前に投稿したエラーメッセージを受け取りました(これはrspect投稿が行うべきことです)が、Rspecが何を受信しているかの情報を取得する方法がわかりませんポストステートメント。
質問2:必要なパラメーターが欠落していることを示すエラーメッセージを受信するという、発生するはずの応答を適切にテストするにはどうすればよいですか?
編集:私のコントローラーは、新しい病気を引き起こすはずだと示しているようですが、テストは失敗します。ウェブサイトで必要なパラメータが欠落している病気を提出しようとすると、「名前を空白にすることはできません」というフラッシュ通知が表示されます。rspecでそれをテストする方法がわかりません。
編集#2:上記のコードを含めました。strong_parameters
disease_paramsは、 gemの使用に関する推奨事項に従って、コントローラーの下部で定義されます。
ありがとう!