簡體   English   中英

Ruby on Rails教程第3章:為什么我的測試失敗?

[英]Ruby on Rails Tutorial Chapter3 : Why is my test failing?

如果有人可以幫助我弄清楚為什么我的測試失敗,那將是很大的幫助! 我以為我完美地遵循了每個步驟,但是$ rails test命令導致失敗! 我已撤回所有步驟,並確保沒有錯別字。 我目前正在分支中運行$rails test命令,並使用Cloud 9(雲開發環境)。

靜態頁面控制器

    require 'test_helper'

class StaticPagesControllerTest < ActionDispatch::IntegrationTest
  def setup
    @base_title = "Ruby on Rails Tutorial Sample App"
  end

  test "should get home" do
    get static_pages_home_url
    puts response.body
    assert_response :success
    assert_select "title", "Home | #{@base_title}", response.body
  end

  test "should get help" do
    get static_pages_help_url
    puts response.body
    assert_response :success
    assert_select "title", "Help | #{@base_title}", response.body
  end

  test "should get about" do
    get static_pages_about_url
    puts response.body
    assert_response :success
    assert_select "title", "About | #{@base_title}", response.body
  end

end

About.html.erb

<% provide(:title, "About") %>
<h1>About</h1>
<p>
  The <a href="http://www.railstutorial.org/"><em>Ruby on Rails Tutorial</em></a> is a 
  <a href="http://www.railstutorial.org/book">book</a> and
  <a href="http://www.screencasts.railstutorial.org/"> screencast series</a> 
  to teach web development with 
  <a href="http://www.rubyonrails.org/">Ruby on Rails</a>.
  This is the sample application for the tutorial.
</p>

Home.html.erb

<% provide(:title, "Home") %>
<h1>Sample App</h1>
<p>
  This is the home page for the <a href="http://www.railstutorial.org/">Ruby on Rails Tutorial</a> sample application.
</p>

Application.html.erb

<!DOCTYPE html>
<html>
  <head>
    <title><%= yield(:title) %> | Ruby on Rails Tutorial Sample App</title>
    <%= csrf_meta_tags %>

    <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track': 'reload' %>
    <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
  </head>

  <body>
    <%= yield %>
  </body>
</html>

對於About,Home和Help測試,我收到相同的失敗消息。 我按照一些評論者的建議添加了response.body。

失敗訊息

F

Failure:
StaticPagesControllerTest#test_should_get_about [/home/ubuntu/workspace/sample_app/test/controllers/static_pages_controller_test.rb:26]:
<h1>About</h1>
<p>
  The <a href="http://www.railstutorial.org/"><em>Ruby on Rails
  Tutorial</em></a> is a
  <a href="http://www.railstutorial.org/book">book</a> and
  <a href="http://screencasts.railstutorial.org/">screencast series</a>
  to teach web development with
  <a href="http://rubyonrails.org/">Ruby on Rails</a>.
  This is the sample application for the tutorial.
</p>
.
Expected 0 to be >= 1.

/usr/local/rvm/gems/ruby-2.4.0/gems/railties-5.1.4/lib/rails/test_unit/reporter.rb:70:in `method': undefined method `test_should_get_about' for class `Minitest::Result' (NameError)
        from /usr/local/rvm/gems/ruby-2.4.0/gems/railties-5.1.4/lib/rails/test_unit/reporter.rb:70:in `format_rerun_snippet'
        from /usr/local/rvm/gems/ruby-2.4.0/gems/railties-5.1.4/lib/rails/test_unit/reporter.rb:23:in `record'
        from /usr/local/rvm/gems/ruby-2.4.0/gems/minitest-5.11.1/lib/minitest.rb:786:in `block in record'
        from /usr/local/rvm/gems/ruby-2.4.0/gems/minitest-5.11.1/lib/minitest.rb:785:in `each'
        from /usr/local/rvm/gems/ruby-2.4.0/gems/minitest-5.11.1/lib/minitest.rb:785:in `record'
        from /usr/local/rvm/gems/ruby-2.4.0/gems/minitest-5.11.1/lib/minitest.rb:334:in `run_one_method'
        from /usr/local/rvm/gems/ruby-2.4.0/gems/minitest-5.11.1/lib/minitest.rb:321:in `block (2 levels) in run'
        from /usr/local/rvm/gems/ruby-2.4.0/gems/minitest-5.11.1/lib/minitest.rb:320:in `each'
        from /usr/local/rvm/gems/ruby-2.4.0/gems/minitest-5.11.1/lib/minitest.rb:320:in `block in run'
        from /usr/local/rvm/gems/ruby-2.4.0/gems/minitest-5.11.1/lib/minitest.rb:360:in `on_signal'
        from /usr/local/rvm/gems/ruby-2.4.0/gems/minitest-5.11.1/lib/minitest.rb:347:in `with_info_handler'
        from /usr/local/rvm/gems/ruby-2.4.0/gems/minitest-5.11.1/lib/minitest.rb:319:in `run'
        from /usr/local/rvm/gems/ruby-2.4.0/gems/railties-5.1.4/lib/rails/test_unit/line_filtering.rb:9:in `run'
        from /usr/local/rvm/gems/ruby-2.4.0/gems/minitest-5.11.1/lib/minitest.rb:159:in `block in __run'
        from /usr/local/rvm/gems/ruby-2.4.0/gems/minitest-5.11.1/lib/minitest.rb:159:in `map'
        from /usr/local/rvm/gems/ruby-2.4.0/gems/minitest-5.11.1/lib/minitest.rb:159:in `__run'
        from /usr/local/rvm/gems/ruby-2.4.0/gems/minitest-5.11.1/lib/minitest.rb:136:in `run'
        from /usr/local/rvm/gems/ruby-2.4.0/gems/minitest-5.11.1/lib/minitest.rb:63:in `block in autorun'
        from /usr/local/rvm/gems/ruby-2.4.0/gems/spring-2.0.2/lib/spring/application.rb:171:in `fork'
        from /usr/local/rvm/gems/ruby-2.4.0/gems/spring-2.0.2/lib/spring/application.rb:171:in `serve'
        from /usr/local/rvm/gems/ruby-2.4.0/gems/spring-2.0.2/lib/spring/application.rb:141:in `block in run'
        from /usr/local/rvm/gems/ruby-2.4.0/gems/spring-2.0.2/lib/spring/application.rb:135:in `loop'
        from /usr/local/rvm/gems/ruby-2.4.0/gems/spring-2.0.2/lib/spring/application.rb:135:in `run'
        from /usr/local/rvm/gems/ruby-2.4.0/gems/spring-2.0.2/lib/spring/application/boot.rb:19:in `<top (required)>'
        from /usr/local/rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/local/rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
        from -e:1:in `<main>'

這看起來像是布局錯誤。 您的斷言正在檢查諸如“關於|網站名稱”之類的字符串,但是您的輸出不包含標題標簽,它僅顯示正文,而不顯示application.html.erb中的任何內容。

您需要確保控制器使用application.html.erb中定義的布局來呈現視圖(默認情況下會發生這種情況,但是可能配置錯誤或控制器使用諸如layout: false類的東西進行呈現)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM