4

同じモジュールを含む 3 つのコントローラーがあります。

Test:Unit モジュールを 1 か所でテストするにはどうすればよいですか?

各コントローラー (DRY ではない) に対して 3 つの同一の機能テストを作成する必要がありますか?

TestController / TestController1 / TestController2 :

class TestController < ApplicationController
 include TestModule

 test_module :test, :only => [:index]
 ...
end

テストモジュール:

module TestModule
 extend ActiveSupport::Concern

 module ClassMethods
  private

  def test_module(resource, options = {})
   self.before_filter(options.slice(:only, :except)) do
     puts 'test_module'
   end
  end
 end
end

前もって感謝します !

4

2 に答える 2

1

コントローラーのテストは、まさにそれをテストする必要があります...コントローラー。したがって、コントローラー用に作成しているテストでは、コントローラーのアクションが期待どおりに動作することを確認する必要があります。コントローラーのアクションを実行するためにどのモジュールを含めたかに関係ありません。それらをブラックボックスと考えてください。気にするのは、コントローラーにいくつかの入力を与えてから、出力が本来あるべきものであることを確認することだけです.

モジュールを独自のエンティティとしてテストし、モックアップとテストを作成して、各モジュール メソッドを十分に検証する必要があります。コントローラは将来変更される可能性があるため、この方法でモジュールのテスト カバレッジを常に確保できます。

于 2011-08-04T11:57:49.467 に答える
0

コントローラーをテストするための RSpec などの標準ツールの使用方法を学びたいと思うかもしれません。

Ryan Bates の Railscastへのリンクは次のとおりです。

于 2011-08-04T22:16:31.360 に答える