我的教师应用程序包括一种从研讨会中删除学生的方法(一个课程,但我不想使用“课程”这个词),从连接表中删除该学生的记录。我没有直接删除学生,但我删除了“Aula”,这是学生/研讨会联接表中的记录。我正在尝试编写测试以确保在删除学生时,该学生的ID也会从座位表数组中删除。此功能似乎在开发中正常工作,但不在测试中。
测试
test "Remove student from class period and seating chart" do
log_in_as(@teacher_user)
get seminar_path(@seminar)
seating = [@student.id, @other_student.id]
@seminar.update(:seating => seating)
assert_difference ['Aula.count','@student.aulas.count', '@seminar.students.count'], -1 do
delete aula_path(@aula)
end
puts "In test"
puts @seminar.seating
assert_redirected_to scoresheet_url(@seminar)
end
Aula控制器中的销毁方法
def destroy
thisAula = Aula.find(params[:id])
@seminar = Seminar.find(thisAula.seminar_id)
#Remove student from seating chart
seating = @seminar.seating
seating.delete(thisAula.student_id)
@seminar.update(:seating => seating)
puts "In Controller"
puts @seminar.seating
thisAula.destroy
#Redirect
flash[:success] = "Student removed from class period"
redirect_to scoresheet_url(@seminar)
end
一旦我修正了这个错误,我想在测试中包括座位表计数,如下:
assert_difference ['Aula.count','@student.aulas.count', '@seminar.students.count', '@seminar.seating.count'], -1 do
但测试在那里失败,因为座位阵列没有减少其数量。
我已经尝试过这些“看跌”线来弄清楚发生了什么。
提前感谢您的任何见解。
-Jeff
运行测试put:
In Controller
614857506
In Test
45061424
614857506
这表明学生的id会从座位数组中删除。但是当程序返回测试时,座位阵列已恢复为其原始形式,其中包括已删除学生的ID。
答案 0 :(得分:0)
知道了。这是一个需要重新加载模型的案例。
mean(data$value[data$condition=="a"][data$train=="c"])