夹具在控制器方法之后恢复值

时间:2016-11-09 03:24:33

标签: ruby-on-rails arrays testing

我的教师应用程序包括一种从研讨会中删除学生的方法(一个课程,但我不想使用“课程”这个词),从连接表中删除该学生的记录。我没有直接删除学生,但我删除了“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。

1 个答案:

答案 0 :(得分:0)

知道了。这是一个需要重新加载模型的案例。

mean(data$value[data$condition=="a"][data$train=="c"])