1

Rails Guides または Rails を使用した Agile Web Development で通常 HelperTest と呼ばれるこれらのクラスについての言及は見つかりません。ネットを検索すると、ほとんどの人がそれらを使用してヘルパーをテストしていることがわかります。しかし、なぜ scaffold はモデル クラスごとにこれらのいずれかを作成するのでしょうか? そして、なぜそれは test\units の下に置かれるのですか? これらがどこでどのように使用されるべきかについての良い例に感謝します。scaffold によって生成されたヘルパー ファイルが使用されていない場合、単に削除するのは間違っていますか? 前もって感謝します

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 に答える