[英]Rails 3 - How do I test a controller module?
我有3個包含相同模塊的控制器。
如何使用Test:Unit將模塊放在一個地方進行測試?
我應該為每個控制器編寫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
提前致謝 !
控制器測試應該准確地測試……控制器。 因此,您為控制器編寫的任何測試都應驗證控制器動作是否完全符合您的期望,而不管您為它們執行的動作包含了什么模塊。 將它們視為黑匣子,您所關心的就是為控制器提供一些輸入,然后驗證輸出是否應該是它們。
您應該將模塊作為自己的實體進行測試,編寫模型和測試以充分驗證每個模塊方法。 您的控制器將來可能會更改,因此,您將始終擁有該模塊的測試范圍。
您可能想學習使用標准工具(例如RSpec)來測試控制器。
這是Ryan Bates的Railscast的鏈接
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.