私は同じモジュールを含む3つのコントローラを持っています。Rails 3 - コントローラモジュールをテストするにはどうすればよいですか?
テスト:モジュールを1か所にユニット化するにはどうすればテストできますか?
コントローラごとに3つの同一の機能テストを作成する必要があります(DRYではない)。
TestController/TestController1/TestController2:
class TestController < ApplicationController
include TestModule
test_module :test, :only => [:index]
...
end
TestModule:事前に
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
ありがとう!
ありがとうございます。私は自分のコントローラーのテストを書きます。しかし、私のモジュールのために単体テスト(Test:Unit)を書くにはどうすればいいですか?私はコントローラを嘲笑しなければならない?もしそうなら、私はこれらのテストをどこに置くべきですか? – invaino
このように考える:モジュールのテストを書くことは、モデルのテストを書くことのようなものです。彼らはどちらもその中にメソッドを持っています。そのため、メソッドにパラメータをコールしたり、メソッドにパラメータを渡したりすると、そのメソッドから特定の結果が出ることが予想され、それがモジュールでテストする必要があります。だから私が 'TestModule.create_something_amazing'を呼び出して、それが私にとって何か驚くべきものを作り出すと期待したら、テストはそれが私が期待することを検証するべきです。これらのテストは、あなたのモジュールがRailsアプリケーションの 'lib'ディレクトリに配置されているはずですので、' Unit/lib'フォルダに入れてください。 – iwasrobbed
あなたの言ったようなモデルモジュールをテストしました。しかし、私はこの特定のモジュールをテストする方法を理解していません。これは、コントローラのクラスメソッドです。どういうわけか、コントローラーのインスタンスの整合性を確認する必要がありますが、どうすればそれを行うことができるのか分かりません。私は単位テストでtest_moduleメソッドを呼び出すことはできませんが、それは動作しません:( – invaino