【问题标题】:Verifying page title with rspec使用 rspec 验证页面标题
【发布时间】:2011-04-27 15:39:58
【问题描述】:

我正在浏览 Michael Hartl 的 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) PagesController GET 'home' 应该 有正确的标题 失败/错误:response.should have_selector("title", :content => “Ruby on Rails 教程示例应用程序 | 家”) 预计以下输出将包含 Ruby on Rails 教程示例应用程序 |家 标签: # ./spec/controllers/pages_controller_spec.rb:13:in `块(3级)'

我希望这会过去。我究竟做错了什么?我正在使用 Rails 3 和 RSpec 2.0.0

【问题讨论】:

    标签: ruby-on-rails rspec


    【解决方案1】:

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

    describe MyController do
      integrate_views
    

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

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

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

    编辑

    对于 Rspec2,将 integrate_views 替换为 render_views

    【讨论】:

    • 我尝试将 integration_views 指令放在顶部,但现在出现语法错误
    • 糟糕,您必须使用 Rspec 2。试试render_views
    • 谢谢,也许只是编辑你的答案,说你应该在 Rspec 2 上使用 render_views?
    【解决方案2】:

    我发现迁移到 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】:

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

      以下内容对我很有效:

      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
      

      【讨论】:

      • 另外,在这种情况下使用include 方法时应该非常小心。如果您在标题中有该字符串,它将通过,但是,也可能存在不希望的事情。在这种情况下,我建议使用eq 方法,因为如果它不是传递的确切字符串,它将失败。
      【解决方案4】:

      我强烈怀疑你的某个地方有错字。

      目前,我正在完成第 11 章的练习 4。我在本教程中遇到的每一个问题都被证明是我的拼写错误。

      注意:我不是在剪切和粘贴。我正在手动输入所有代码。

      【讨论】:

      • 我做了复制粘贴的事情......一旦我将 render_views 放在顶部,它就可以完美运行
      猜你喜欢
      • 1970-01-01
      • 2016-06-25
      • 1970-01-01
      • 1970-01-01
      • 2012-03-09
      • 2021-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多