Hartl Rails 教程 - 第 3 章
Hartl Rails Tutorial - Chapter 3
我正在完成添加联系人页面的练习,但页面标题测试失败。
这是我的测试文件:
require 'test_helper'
class StaticPagesControllerTest < ActionDispatch::IntegrationTest
def setup
@base_title = "Ruby on Rails Tutorial Sample App"
end
test "should get root" do
get root_url
assert_response :success
end
test "should get home" do
get static_pages_home_url
assert_response :success
assert_select "title", "Home | #{@base_title}"
end
test "should get help" do
get static_pages_help_url
assert_response :success
assert_select "title", "Help | #{@base_title}"
end
test "should get about" do
get static_pages_about_url
assert_response :success
assert_select "title", "About | #{@base_title}"
end
test "should get contact" do
get static_pages_about_url
assert_response :success
assert_select "title", "Contact | #{@base_title}"
end
end
这是 contact.html.erb 文件:
<% provide(:title, "Contact") %>
<h1>Contact</h1>
<p>
Contact the Ruby on Rails Tutorial about the sample app at the
<a href="http://www.railstutorial.org/contact">contact page</a>.
</p>
我还完成了以下内容:
- 添加了适当的路线
- 添加了适当的操作
但是我收到此错误消息:
test_should_get_contact#StaticPagesControllerTest (0.45s)
<Contact | Ruby on Rails Tutorial Sample App> expected but was
<About | Ruby on Rails Tutorial Sample App>..
Expected 0 to be >= 1.
test/controllers/static_pages_controller_test.rb:35:in `block in <class:StaticPagesControllerTest>'
另请注意
- 页面正确显示,具有预期的页面标题(联系而非关于)
- 我使用全新的页面再次测试,但结果相同 'About' 在页面标题
中返回
真的不确定为什么它会返回这个,因为我已经密切关注了教程。我想在教程中取得进步,但如果我不能解决这个基本的测试问题,我不确定我能走多远!
我认为您可以尝试将 get static_pages_about_url
行(在 test "should get contact" do
下)替换为:
get static_pages_contact_url
发生的情况是您的测试调用了错误的 url(about
,而不是 contact
),导致检查 <title>
时出错。
请检查您在此代码块第二行的代码。
test "should get contact" do
# get static_pages_about_url # This is wrong correct it to as below
get static_pages_contact_url
assert_response :success
assert_select "title", "Contact | #{@base_title}"
end
您已经给出了一个测试用例来检查关于 url 的联系页面标题,这显然将无法通过测试。
您应该像上面那样在联系人 url 上测试联系人页面标题。
做出改变,你应该开始了!
还有一句激励的话,即使事情现在没有意义,也要坚持下去,因为以后他们会的。干杯:)
我正在完成添加联系人页面的练习,但页面标题测试失败。
这是我的测试文件:
require 'test_helper'
class StaticPagesControllerTest < ActionDispatch::IntegrationTest
def setup
@base_title = "Ruby on Rails Tutorial Sample App"
end
test "should get root" do
get root_url
assert_response :success
end
test "should get home" do
get static_pages_home_url
assert_response :success
assert_select "title", "Home | #{@base_title}"
end
test "should get help" do
get static_pages_help_url
assert_response :success
assert_select "title", "Help | #{@base_title}"
end
test "should get about" do
get static_pages_about_url
assert_response :success
assert_select "title", "About | #{@base_title}"
end
test "should get contact" do
get static_pages_about_url
assert_response :success
assert_select "title", "Contact | #{@base_title}"
end
end
这是 contact.html.erb 文件:
<% provide(:title, "Contact") %>
<h1>Contact</h1>
<p>
Contact the Ruby on Rails Tutorial about the sample app at the
<a href="http://www.railstutorial.org/contact">contact page</a>.
</p>
我还完成了以下内容:
- 添加了适当的路线
- 添加了适当的操作
但是我收到此错误消息:
test_should_get_contact#StaticPagesControllerTest (0.45s)
<Contact | Ruby on Rails Tutorial Sample App> expected but was
<About | Ruby on Rails Tutorial Sample App>..
Expected 0 to be >= 1.
test/controllers/static_pages_controller_test.rb:35:in `block in <class:StaticPagesControllerTest>'
另请注意
- 页面正确显示,具有预期的页面标题(联系而非关于)
- 我使用全新的页面再次测试,但结果相同 'About' 在页面标题 中返回
真的不确定为什么它会返回这个,因为我已经密切关注了教程。我想在教程中取得进步,但如果我不能解决这个基本的测试问题,我不确定我能走多远!
我认为您可以尝试将 get static_pages_about_url
行(在 test "should get contact" do
下)替换为:
get static_pages_contact_url
发生的情况是您的测试调用了错误的 url(about
,而不是 contact
),导致检查 <title>
时出错。
请检查您在此代码块第二行的代码。
test "should get contact" do
# get static_pages_about_url # This is wrong correct it to as below
get static_pages_contact_url
assert_response :success
assert_select "title", "Contact | #{@base_title}"
end
您已经给出了一个测试用例来检查关于 url 的联系页面标题,这显然将无法通过测试。
您应该像上面那样在联系人 url 上测试联系人页面标题。
做出改变,你应该开始了!
还有一句激励的话,即使事情现在没有意义,也要坚持下去,因为以后他们会的。干杯:)