gpt4 book ai didi

ruby-on-rails - 来自 cucumber 的 HTTP POST XML 内容

转载 作者:数据小太阳 更新时间:2023-10-29 06:55:39 25 4
gpt4 key购买 nike

我正在尝试通过 POST 将 XML 内容发送到一个简单的 Rails 项目中的 Controller (“解析”)方法(“索引”)。它不是 RESTful,因为我的模型名称不同,比如“汽车”。我在有效的功能测试中有以下内容:

def test_index
...
data_file_path = File.dirname(__FILE__) +
'/../../app/views/layouts/index.xml.erb'

message = ERB.new( File.read( data_file_path ) )
xml_result = message.result( binding )
doc = REXML::Document.new xml_result

@request.env['RAW_POST_DATA'] = xml_result
post :index
assert_response :success
end

我现在正在尝试 Cucumber (0.4.3),并且想知道如何在“When”子句中模拟 POST 请求。我只有一个 Controller 方法“索引”,我在 config/routes.rb 中有以下内容:

ActionController::Routing::Routes.draw do |map|
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
end
  1. cucumber 中的 webrat 只能用于 HTML,不能进行 POST?
  2. @request 变量在 Cucumber 环境中不可用?
  3. 如果我在 features/step_definitions/car_steps.rb 中使用“访问索引”之类的东西(假设它是 Parse Controller 、索引方法),我会收到以下错误:

undefined method `index' for # (NoMethodError)

感谢任何有关如何使用 Cucumber 对包含 XML 内容的 HTTP POST 进行集成测试的建议。

最佳答案

Patrick Ritchie 的解决方案也帮助了我,但我需要稍作修改以使其适用于 Rails 3。

post("/controller/index", xml_result, {"CONTENT_TYPE" => "text/xml"})

我认为这是因为在 v3 中,Rails 与 Rack 的集成更加紧密。

关于ruby-on-rails - 来自 cucumber 的 HTTP POST XML 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1722153/

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