테스트 프레임 워크에 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
이 테스트는 어떻게 내 응용 프로그램이 작동 작동하지 않습니다 기본 RSpec에 프레임 워크는 테스트가 포함되어 있습니다. 오히려 잘못된 게시물에 새로운 질병을 돌아보다가 오류를 반환 :
Required parameter missing: disease
질문 # 1 : 나는 RSpec에이 게시물을하지 반환되는 내용을보고하는 방법을 모르겠어요. 이 경우 response
개체가 만들어지지 않은 것 같습니다. assigns(:disease)
인쇄 할 때 아무 것도 포함되어 있지 않습니다. 빈 데이터 (올바른 URL 게시가 수행해야하는)가있는 올바른 URL에 cURL 게시물을 제출하여 이전에 게시 한 오류 메시지가 표시되지만 Rspec이 수신 한 정보를 얻는 방법을 모르겠습니다. 게시물 진술서.
질문 # 2 : 발생해야하는 응답을 제대로 테스트하려면 어떻게해야합니까? 필요한 매개 변수가 없다는 오류 메시지가 표시됩니다.
편집 : 내 컨트롤러가 새로운 질병을 유발해야한다는 것을 나타내는 것으로 보이지만 테스트가 실패합니다. 웹 사이트에서 필수 매개 변수가 누락 된 질병을 제출하려고 시도하면 "이름은 비워 둘 수 없습니다"라는 플래시 알림이 표시됩니다. rspec에서 어떻게 테스트하는지 모르겠습니다.
편집 # 2 : 위의 코드가 포함되어 있습니다. disease_params는 strong_parameters
gem을 사용하기위한 권장 사항에 따라 컨트롤러 하단에 정의됩니다.
감사합니다.
조치 표시 – apneadiving
어디에서 'disease_params'를 정의합니까? – apneadiving
여기'params.require (: disease)'에서 실패하는 것 같지만 왜 그런지 말할 수 없습니다 – apneadiving