簡體   English   中英

Rails 3-如何測試控制器模塊?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM