通常在RSpec中通过参数传递:
params[:my_key] = my_value
get :my_method
my_method
处理从params收到的内容。但是在我的控制器中我有一个方法,它直接采用args,即:
def my_method(*args)
...
end
如何在测试中使用这些args调用方法?我试过get :my_method(args)
但Ruby解释器抱怨语法错误。
答案 0 :(得分:3)
据我所见,你做不到。如果需要直接测试my_method
,可以将my_method
提取到帮助程序或库中,然后使用Rspec进行测试。或者,您可以构建控制器测试,以便my_method
中的代码作为控制器操作的一部分执行,可以由标准HTTP谓词之一(get,post,put,delete)调用。
最终必须通过使用get
,post
等设置测试来访问控制器使用的任何代码,否则Rails无法执行此操作而您的应用不会工作。这可能会使测试变得不方便,但也可能告诉您my_method
最好不要在控制器外生活。