我在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'比傳入create action的id大嗎? – gregates