我有3个控制器,包括相同的模块。
如何使用Test进行测试:将模块单元放在一个位置?
我应该为每个控制器(而不是DRY)编写3个相同的功能测试吗?
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
提前致谢!
答案 0 :(得分:2)
控制器测试应该测试......控制器。因此,您为控制器编写的任何测试都应验证控制器操作是否完全符合您的预期,无论您使用哪些模块来执行操作。将它们视为一个黑盒子,你关心的只是给控制器一些输入,然后验证它们应该是什么输出。
您应该将模块作为自己的实体进行测试,编写模型和测试以充分验证每个模块方法。您的控制器将来可能会发生变化,因此您将始终拥有模块的测试覆盖率。
答案 1 :(得分:0)
您可能希望学习使用标准工具(如RSpec)来测试控制器。
的链接