rspec에서이 코드를 테스트하는 데 문제가 있습니다. 테스트에서 제공하는 오류를 기반으로 테스트가 올바르게 (거의 또는 전혀) 작성되지 않았 음을 예상합니다. 올바른, 그것은 단지 어떤 이유로 그것을 얻지 못하고있다. 나는 또한 코드가 브라우저에서 작동 함을 주목해야한다.작성 작업이 완료된 후 rspec 컨트롤러 테스트
편집 : 사과가 명확하지 않은 경우 이 컨트롤러 (evaluations_controller
)에서 사용자는 주어진 그룹의 각 학생을 반복하고 일련의 목표에 따라 진행 상황을 평가합니다. 새 작업에서 @student = groups.student.first
- 해당 학생의 평가 데이터가 작성 작업에 성공적으로 저장되면 student_id가 1 씩 증가하고 새 student_id가 새 작업으로 다시 전달되므로 (다음 학생을 평가할 수 있음) -이 더 이상 학생이 없을 때까지 반복합니다.
내가 테스트하려는 것은 student_id가 평가가 생성 작업에 저장되면 성공적으로 증가하고 있다는 것입니다.
코드 :
def create
...
if @evaluation.save
@id = params[:student_id]
@id = @id.to_i + 1
redirect_to evaluate_path({ student_group_id: @student_group, student_id: @id})
else
...
end
end
RSpec에 시험 :
it "should load the next student" do
#set @id to current student.id +1
@id = @student.id
@id = @id.to_i + 1
#post :create
post :create, {student_group_id: @student_group, student_id: @student, evaluation: @attr}
controller.params[:student_id].should eql @id
end
오류 :
Failure/Error: controller.params[:student_id].should eql @id expected: 2 got: "1"
당신은 매개 변수를 결코 업데이트하지 않습니다. 테스트에서 꽤 명확한 것 같습니다. – apneadiving
? 미안하지만 어떻게 할 수 있니? – dax
당신의 주장에서 당신이 테스트하려고하는 것이 확실하지 않습니다. 'evaluate_path'에 전달 된 'student_id'가 생성 액션에 전달 된 ID보다 하나 더 크다는 것을 주장하고 싶습니까? – gregates