ruby-on-rails - Rails 3 - 如何测试 Controller 模块?

标签 ruby-on-rails ruby ruby-on-rails-3 unit-testing testunit

我有 3 个包含相同模块的 Controller 。

如何使用 Test:Unit 将模块集中在一个地方进行测试?

我应该为每个 Controller 编写 3 个相同的功能测试(不是 DRY)吗?

测试 Controller /测试 Controller 1/测试 Controller 2:

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

提前致谢!

最佳答案

Controller 测试应该准确地测试…… Controller 。因此,您为 Controller 编写的任何测试都应该验证 Controller 的操作是否完全符合您的预期,无论您为它们包含了哪些模块来执行它们的操作。将它们视为一个黑盒子,您所关心的只是为 Controller 提供一些输入,然后验证输出是否正确。

您应该将模块作为其自身的实体进行测试,编写模型和测试以充分验证每个模块方法。您的 Controller 将来可能会发生变化,因此您将始终拥有模块的测试覆盖率。

关于ruby-on-rails - Rails 3 - 如何测试 Controller 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6940076/

相关文章:

ruby-on-rails - Rails 模型分为多个定义

ruby - jruby 1.6.7/1.7.0 1.9 模式下的 OpenSSL::SSL::SSLError

mysql - 将 results.each 的输出存储到 ruby​​ on rails 中的数组中

ruby - 俗气的页面对象。主页 :Class (NoMethodError) 的未定义方法 `text_field'

ruby-on-rails - 如何将这两个 Ruby 字符串测试结合到一个正则表达式中?

ruby-on-rails - Sendgrid 上的 Heroku 错误

ruby-on-rails - 我应该在新项目中使用哪个版本的 Rails

ruby-on-rails - Rails 5 api - 未定义的方法 `user_url'

ruby-on-rails - Ruby 从数组中减去一个数

ruby-on-rails - 如何为表单内的选择字段设置默认值