繁体   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