2

我有简单的测试用例:(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

知道为什么吗?对我来说,这两个期望应该是相等的。

4

1 回答 1

2

如果您尝试更改:

let (:board) {FactoryGirl.create(:board_tree)}

进入

let! (:board) {FactoryGirl.create(:board_tree)}

您将看到反转条件时结果不会改变。问题是链接是由 rspec 第一次引用变量时创建的,因此在第二个示例中,当 rspec 评估零件board时还没有链接。expect(Link.all.count)

于 2013-06-28T10:30:30.750 回答