我正在开发一个由章节组成的课程应用程序。每章都有一个带有问题和答案的测验。
每个问题只能有一个正确答案。我想用 RSpec 测试这个规则。
在我的 Answers 控制器测试中,我编写了一个测试:
it "does not create a new correct answer when there is already a correct answer" do
answer2 = Answer.create(title: "correct answer", is_correct: true, question_id: @question.id)
@question.answers << answer2
post :create, question_id: @question.id, answer: { title: "new answer", is_correct: true }
expect(Answer.count).to eq(1)
在这个测试中,我想确保当 question.answers 集合已经有一个 is_correct 属性设置为 true 的答案时,不会创建新的答案。
但是,我的测试失败了。当我检查答案控制器的创建操作中的代码并检查问题的 question.answers 集合中是否有至少一个答案时,似乎:
question
返回一个空数组
=> []
为什么 question.answers 集合为空,而在测试中我向问题的答案集合添加了答案?
@question.answers << answer2