注
我知道,
action
是Rails中的保留字。我正在Rails服务器中为Yandex Money实现第三方API,Yandex API应用程序在我的Rails应用程序中发布action
param。我知道如何得到它(How to not use Rails action parameter in controller)。问题是 - 如何对我的控制器进行写测试,因为我的测试无法发送action
参数(参见下面的说明)。
我在Rails中编写控制器测试,我需要从测试中将action
参数传递给控制器。这是我的控制者:
class YandexController < ApplicationController
def notify
render text: request.request_parameters
end
end
使用curl
命令发布数据时:
curl --data "action=paymentAviso&some_other_param=value" http://localhost:3000/yandex/notify
我得到了正确的结果:
{"action"=>"paymentAviso", "some_other_param"=>"value"}
但是,当我尝试在测试中发送action
参数时,它无效。请参阅下面的测试:
class YandexControllerTest < ActionController::TestCase
test "notify sucess" do
post :notify, { action: 'paymentAviso', some_other_param: 'value' }
assert_response :success
puts response.body
end
end
当我进行测试时,我看到:
运行:
{ “some_other_param”=&gt; “中值”}
有没有办法从测试中将action
参数传递给我的控制器?
答案 0 :(得分:2)
除非您指的是控制器的操作,否则不能在参数中使用action
。 action
参数是Rails用来确定在控制器中运行哪种方法的参数。因此,当您运行规范时,它只是在控制器中调用paymentAdviso
。
您应该更改参数名称,以便它不会干扰Rails&#39;约定。
有关其他保留Rails字词的列表,请查看此处:https://reservedwords.herokuapp.com/