1

我在 Rails Guides 或 Agile Web Development with Rails 中找不到这些类通常称为 HelperTest 的任何提及。搜索网络似乎表明大多数人使用它们来测试助手。但是为什么脚手架会为每个模型类创建一个呢?为什么它被置于 test\units 之下?如果有一个很好的例子说明应该在哪里以及如何使用这些,我将不胜感激。如果不使用脚手架生成的此类帮助文件,仅删除它们是错误的吗?提前致谢

4

1 回答 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 回答