通过RSpec进行测试时,将直接参数传递给Controller#方法

时间:2010-04-15 16:52:48

标签: ruby-on-rails testing controller rspec

通常在RSpec中通过参数传递:

params[:my_key] = my_value
get :my_method

my_method处理从params收到的内容。但是在我的控制器中我有一个方法,它直接采用args,即:

def my_method(*args)
  ...
end

如何在测试中使用这些args调用方法?我试过get :my_method(args)但Ruby解释器抱怨语法错误。

1 个答案:

答案 0 :(得分:3)

据我所见,你做不到。如果需要直接测试my_method,可以将my_method提取到帮助程序或库中,然后使用Rspec进行测试。或者,您可以构建控制器测试,以便my_method中的代码作为控制器操作的一部分执行,可以由标准HTTP谓词之一(get,post,put,delete)调用。

最终必须通过使用getpost等设置测试来访问控制器使用的任何代码,否则Rails无法执行此操作而您的应用不会工作。这可能会使测试变得不方便,但也可能告诉您my_method最好不要在控制器外生活。