2013-08-05 62 views
2

在Rails的教程,第5.3节(布局链接),我们添加一些测试的联系页面:困惑,为什么在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 

后,我们在页脚注释掉的联系纽带代码:

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

根据课文,“为了确保双方的测试清单5.17失败,我们需要注释掉‘’页脚链接”联系,但并没有意义的我。没有测试联系人链接,只测试联系人页面具有有效的标题和内容。如果联系页面已正确定义,则无论脚注中是否存在链接,测试仍应通过。

还是我失去了一些东西?它的行为如我所愿,但我不想继续并错过我应该理解的事情。

感谢

回答

1

如果我们不注释掉环节,第一个测试我们创建联系页面之前通过。这是因为RSpec会在页面上的任何位置搜索单词“Contact”(这就是'have_content'的工作方式),所以它会在页脚中找到它,这意味着第一次测试会通过归功于我们的通用页脚,而不是感谢我们实际上创建一个联系页面。

+0

啊我明白了。如果我以前的部分没有创建联系人页面,它会失败。如果文本指出,如果联系页面存在,它就不会失败(因为前面的部分提到它是一个练习),但我会在星期一对这个问题进行一次脑力激发。 :) 谢谢! – cfiske

+0

哦,对了,忘了那里有一个练习!是的,在评论完该行后,如果您没有完成练习,那么这两项测试都会失败:) – najwa