代码之家  ›  专栏  ›  技术社区  ›  Jaco Pretorius

用rspec验证页面标题

  •  9
  • Jaco Pretorius  · 技术社区  · 15 年前

    Rails Tutorial .

    it "should have the right title" do
          get 'home'
          response.should have_selector("title", :content => "Ruby on Rails Tutorial Sample App | Home")
        end
    

    HTML头部分如下所示

    <head>
        <title>Ruby on Rails Tutorial Sample App | Home</title>
    </head>
    

    我有以下的失败

    1) 页面控制器“回家”应该 有正确的头衔 “RubyonRails教程示例应用程序| 家“) 以下输出应包含RubyonRails 标签: #/规格/控制器/页面控制器规格rb:13:in

    我期待这一切会过去。我做错什么了?我使用的是Rails 3和RSpec 2.0.0

    4 回复  |  直到 15 年前
        1
  •  4
  •   zetetic    15 年前

    控制器规范通常不会呈现完整的视图,因为它们旨在单独测试控制器。您可以告诉Rspec通过包含指令来呈现整个页面 integrate_views

    describe MyController do
      integrate_views
    

    但是,您应该扪心自问是否真的要这样做,或者编写视图规范是否更有意义。

    顺便说一下,您还可以使用CSS3选择器语法来保存一些击键(为此可能需要包括Webrat匹配器):

    response.should have_selector("title:contains('Ruby on Rails Tutorial Sample App | Home')")
    

    对于Rspec2,更换 整合视图 render_views

        2
  •  2
  •   Ward Muylaert stochastic_zeitgeist    12 年前

    我发现移动到Capybara比较容易(我使用的是Rails 3.0.1、Rspec 2.0.1、Ruby 1.9.2)。现在你可以做些

    page.should have_css('title', :text => 'Ruby on Rails Tutorial Sample App | Home')
    
        3
  •  2
  •   Caleb    10 年前

    这个问题看起来很老,这就解释了为什么现在有更好的方法。

    it "has the correct page title", js: true do
      visit "/users/sign_in" # for example
      expect(page.title).to include "Sign In or Create a New Account"
    end
    
        4
  •  0
  •   Dave Doolin    15 年前

    我强烈怀疑你在某个地方有打字错误。

    从这一刻起,我正在完成第11章的练习4。我在教程中遇到的每一个问题都是我的错别字。