5.6 练习

最后更新于:2022-04-01 22:28:56

# 5.6 练习 电子书中有练习的答案,如果想阅读参考答案,请[购买电子书](http://railstutorial-china.org/#purchase)。 避免练习和正文冲突的方法参见[3.6 节](chapter3.html#mostly-static-pages-exercises)中的说明。 1. 按照 [5.2.2 节](#syntactically-awesome-stylesheets)的建议,自己动手把底部的样式由[代码清单 5.13](#listing-footer-css) 中的 CSS 改写成[代码清单 5.15](#listing-refactored-scss) 中的 SCSS。 2. 在[代码清单 5.25](#listing-layout-links-test) 所示的集成测试中添加一些代码,使用 `get` 方法访问“注册”页面,确认这个页面有正确的标题。 3. 像[代码清单 5.36](#listing-test-helper-application-helper) 那样在测试辅助文件中引入应用的辅助方法后,能在测试中使用 `full_title` 辅助方法。然后可以使用[代码清单 5.37](#listing-layout-links-test-signup-full-title-helper) 中的测试检查页面的标题(在前一个练习的基础上编写)。不过这么做有个缺点,如果标题的公共部分有错别字(例如“Ruby on Rails Tutoial”),测试组件不能发现。所以要为 `full_title` 辅助方法编写一个测试:新建一个测试,专门用来测试应用的辅助方法,然后把[代码清单 5.38](#listing-full-title-helper-tests) 中的 `FILL_IN` 改成具体的代码。([代码清单 5.38](#listing-full-title-helper-tests) 使用 `assert_equal` 方法通过 `==` 操作符检查两个值是否相等。) ##### 代码清单 5.36:在测试中引入应用的辅助方法 test/test_helper.rb ``` ENV['RAILS_ENV'] ||= 'test' . . . class ActiveSupport::TestCase fixtures :all include ApplicationHelper . . . end ``` ##### 代码清单 5.37:在测试中使用 `full_title` 辅助方法 GREEN 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 get signup_path assert_select "title", full_title("Sign up") end end ``` ##### 代码清单 5.38:测试 `full_title` 辅助方法 test/helpers/application_helper_test.rb ``` require 'test_helper' class ApplicationHelperTest < ActionView::TestCase test "full title helper" do assert_equal full_title, FILL_IN assert_equal full_title("Help"), FILL_IN end end ```
';