我在 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"