gpt4 book ai didi

ruby-on-rails - 在 Rails Controller 测试中,有没有办法传递 action 参数?

转载 作者:行者123 更新时间:2023-11-28 21:10:23 24 4
gpt4 key购买 nike

NOTE

I know, that action is reserved word in Rails. I am implementing a third party API for Yandex Money in a Rails server and the Yandex API app is posting an action param into my Rails application. I know how get it (How to not use Rails action parameter in controller). The issue is - how write test to my controller, because my test can't send action parameter (see description below).

我在 Rails 中编写 Controller 测试,我需要将 action 参数从测试传递给 Controller ​​。这是我的 Controller :

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

当我运行测试时,我看到:

Running:

{"some_other_param"=>"value"}

有没有办法将 action 参数从测试传递到我的 Controller ?

最佳答案

你不能在参数中使用action,除非你指的是 Controller 的 Action 。 action 参数是 Rails 用来确定在 Controller 中运行哪个方法的参数。因此,当您运行规范时,它只是在 Controller 中调用 paymentAdviso

您应该更改参数名称,这样它就不会干扰 Rails 的约定。

有关其他 Rails 保留字的列表,请查看此处:https://reservedwords.herokuapp.com/

关于ruby-on-rails - 在 Rails Controller 测试中,有没有办法传递 action 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32742898/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com