类方法和期望参数

时间:2013-06-28 10:23:15

标签: ruby-on-rails ruby-on-rails-3 rspec

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

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

1 个答案:

答案 0 :(得分:2)

如果您尝试更改:

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

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

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