我在 Rails Guides 或 Agile Web Development with Rails 中找不到这些类通常称为 HelperTest 的任何提及。搜索网络似乎表明大多数人使用它们来测试助手。但是为什么脚手架会为每个模型类创建一个呢?为什么它被置于 test\units 之下?如果有一个很好的例子说明应该在哪里以及如何使用这些,我将不胜感激。如果不使用脚手架生成的此类帮助文件,仅删除它们是错误的吗?提前致谢
问问题
146 次
1 回答
1
正如您所指出的,脚手架生成器(此处为“帖子”)在以下位置创建辅助测试test/unit/helpers
:
test
├── fixtures
│ └── posts.yml
├── functional
│ └── posts_controller_test.rb
├── integration
├── performance
│ └── browsing_test.rb
├── test_helper.rb
└── unit
├── helpers
│ └── posts_helper_test.rb
└── post_test.rb
它们是单元测试,因为助手只是应该单独测试的方法;此外,如果您认为视图应该保持轻量级,那可能意味着帮助程序最终会产生大量逻辑,并且应该像您的模型一样进行测试。
所以,给定这个助手(在 app/helpers/posts_helper.rb 中)
module PostsHelper
def hello
content_tag :div, :class => "detail" do
"hi"
end
end
end
你可以这样写一个测试:
require 'test_helper'
class PostsHelperTest < ActionView::TestCase
test "hello" do
assert_equal(hello, "<div class=\"detail\">hi</div>")
end
end
它们只是方法,因此请使用与任何单元测试 ( assert_equal
, assert_match
) 中相同的匹配器;assert_dom_equal
在这里也派上用场。(见http://cheat.errtheblog.com/s/assert_dom_equal/
我希望这有帮助 :)
凯尔
于 2012-09-30T06:48:55.827 回答