困惑为什么5.3节中的测试会失败

时间:2013-08-05 21:27:41

标签: testing contact railstutorial.org

在Rails教程的5.3节(布局链接)中,我们为联系页面添加了一些测试:

describe "Contact page" do

  it "should have the content 'Contact'" do
    visit '/static_pages/contact'
    expect(page).to have_content('Contact')
  end

  it "should have the title 'Contact'" do
    visit '/static_pages/contact'
    expect(page).to have_title("Ruby on Rails Tutorial Sample App | Contact")
  end
end

之后我们在页脚代码中注释掉Contact链接:

<li><%#= link_to "Contact", '#' %></li>

根据文本,“为确保清单5.17中的两个测试都失败,我们需要注释掉页脚中的”联系人“链接,”但这对我来说没有意义。没有测试Contact链接,只测试Contact页面有有效的标题和内容。如果正确定义了联系页面,则测试仍应通过页脚中是否有链接。

或者我在这里遗漏了什么?它表现得像我期望的那样,但我不想继续并错过我应该理解的东西。

由于

1 个答案:

答案 0 :(得分:1)

如果我们不注释掉链接,那么在我们创建联系页面之前,第一个测试将会通过。那是因为RSpec会在页面的任何地方搜索“联系人”这个词(这就是'have_content'的工作原理),所以它会在页脚中找到它,这意味着第一次测试将通过我们的通用页脚,不是谢谢我们实际创建一个联系页面。