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