[英]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.