我有简单的测试用例:( board has_many links,link belongs_to board)
context "with feeds" do
let (:board) {FactoryGirl.create(:board_tree)}
it "returns links from all feeds" do
expect(board.all_links.count).to eq Link.all.count
end
end
它失败了(expected 8 got 2
) - 这没关系,我的期望是一样的。
现在我用以下方式切换这个期望:
expect(Link.all.count).to eq board.all_links.count
这一次我认为它会因expected 2 got 8
而失败,但我得到的是:expected 2, got 0
。
知道为什么吗?对我来说,两个期望应该是平等的。
答案 0 :(得分:2)
如果您尝试更改:
let (:board) {FactoryGirl.create(:board_tree)}
到
let! (:board) {FactoryGirl.create(:board_tree)}
您将看到反转条件时结果不会改变。问题是链接是在第一次引用board
变量时由rspec创建的,因此在第二个示例中,当rspec正在评估expect(Link.all.count)
部分时,还没有链接。