【问题标题】:RailsTutorial.org Learning Rails 5.3.4 Layout link testsRailsTutorial.org 学习 Rails 5.3.4 布局链接测试
【发布时间】:2015-07-10 17:44:54
【问题描述】:

按照教程 5.3.4 布局链接测试失败。

这是运行的测试:

$ rails generate integration_test site_layout

这是收到的错误:

/usr/local/rvm/gems/ruby-2.2.1/gems/fog-1.23.0/lib/fog/rackspace/mock_data.rb:42:警告:第 80 行的重复键被忽略:“名称”

/home/ubuntu/workspace/db/schema.rb 还不存在。运行 rake db:migrate 创建它,然后再试一次。如果您不打算使用数据库,则应改为更改 /home/ubuntu/workspace/config/application.rb 以限制将加载的框架。

开始

FAIL["test_layout_links", SiteLayoutTest, 2015-05-10 20:31:00 +0000]
test_layout_links#SiteLayoutTest (1431289860.34s)
    Expected exactly 2 elements matching "a[href="/"]", found 0..
    Expected: 2
      Actual: 0
    test/integration/site_layout_test.rb:8:in `block in <class:SiteLayoutTest>

1/1: [====================================================================================================================] 100% Time: 00:00:00, Time: 00:00:00

Finished in 0.53147s
1 tests, 2 assertions, 1 failures, 0 errors, 0 skips

这是在运行测试并收到错误之前更改的文件 (test/integration/site_layout_test.rb):

require 'test_helper'

class SiteLayoutTest < ActionDispatch::IntegrationTest

  test "layout links" do
    get root_path
    assert_template 'static_pages/home'
    assert_select "a[href=?]", root_path, count: 2
    assert_select "a[href=?]", help_path
    assert_select "a[href=?]", about_path
    assert_select "a[href=?]", contact_path
    # test "the truth" do
    #   assert true
  end
end

我做错了什么?

这是 app/views/layouts/_header.html.erb 文件的代码:

<header class="navbar navbar-fixed-top navbar-inverse">
  <div class="container">
    <%= link_to "sample app", root_path, id: "logo" %>
    <nav>
      <ul class="nav navbar-nav navbar-right">
        <li><%= link_to "Home",    root_path %></li>
        <li><%= link_to "Help",    help_path %></li>
        <li><%= link_to "Log in", '#' %></li>
      </ul>
    </nav>
  </div>
</header>

【问题讨论】:

  • 测试代码看起来不错。错误消息的第二部分是关于测试结果的(来自“FAIL”)。它需要 2 个指向 root_path 的链接,但它确实找到了 0。(test/integration/site_layout_test.rb:8 表示:在文件的第 nr 8 行,这是关于 root_path 的。)所以问题不在于您的测试文件,而是别的地方。看看你的 app/views/layouts/_header.html.erb -file。那里有 2 条根路由,它们是您测试中的 count=2。
  • 谢谢@Mauddev。我从一开始就遇到了这些问题,它们不起作用。文件 app/views/layouts/_header.html.erb 的代码如下。
  • 再次感谢@Mauddev。我将 _header.html.erb 代码添加到原始提交的正文中。我尝试使用您共享的帮助文章,但无法使格式正常工作。我会为以后的提交工作。请你帮我看看最后的原始身体好吗?
  • 感谢您的帮助@Mauddev。我发现了错误。有两个问题:1 我在 application.html.erb 文件中缺少一个“=”,2 没有从 application.html.erb 文件中删除标头代码。

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.2 railstutorial.org


【解决方案1】:

我的问题是当我在_header partial 而不是# 中写入root_path 时,我没有删除''。删除这些后一切正常。不要忘记_footer partial。

【讨论】:

  • 请查看URL这将有助于提高您的内容质量
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-21
相关资源
最近更新 更多