gpt4 book ai didi

ruby - 如何在 Rack::Test 中发布数据

转载 作者:数据小太阳 更新时间:2023-10-29 07:17:17 24 4
gpt4 key购买 nike

我在理解如何使用 Rack::Test 时遇到问题,我遇到的问题是 POST。这是类和错误:

hellotesting.rb

require 'sinatra'

post '/foo' do
"Hello #{params[:name]}."
end

这是测试:

require 'hellotesting'
require 'test/unit'
require 'rack/test'

set :environment, :test

class HelloWorldTest < Test::Unit::TestCase
def test_it_says_hello_to_you
browser = Rack::Test::Session.new(Rack::MockSession.new(Sinatra::Application))
post "/foo", "name" => "Bryan"
assert browser.last_response.ok?
assert_equal 'Hello Bryan', browser.last_response.body
end
end

输出:

1) Error:
test_it_says_hello_to_you(HelloWorldTest):
ArgumentError: wrong number of arguments (1 for 0)
/Library/Ruby/Gems/1.8/gems/sinatra-1.2.6/lib/sinatra/base.rb:1141:in `name'
/Library/Ruby/Gems/1.8/gems/sinatra-1.2.6/lib/sinatra/base.rb:1141:in `send'
/Library/Ruby/Gems/1.8/gems/sinatra-1.2.6/lib/sinatra/base.rb:1141:in `compile!'
/Library/Ruby/Gems/1.8/gems/sinatra-1.2.6/lib/sinatra/base.rb:1141:in `each_pair'
/Library/Ruby/Gems/1.8/gems/sinatra-1.2.6/lib/sinatra/base.rb:1141:in `compile!'
/Library/Ruby/Gems/1.8/gems/sinatra-1.2.6/lib/sinatra/base.rb:1129:in `route'
/Library/Ruby/Gems/1.8/gems/sinatra-1.2.6/lib/sinatra/base.rb:1118:in `post'
(__DELEGATE__):3:in `send'
(__DELEGATE__):3:in `post'
testingjeison.rb:11:in `test_it_says_hello_to_you'

最佳答案

您可能需要将 Rack::Test 混入包含到您的个人类中。我主要使用 RSpec,它不使用类,但使用 Ruby 的 include 的特殊变体来引入额外的功能。您可能想尝试将 include Rack::Test::Methods 放入您的 HelloWorldTest 案例类定义中。 Sinatra 的 testing有更多关于使用 Rack::Test 进行测试的信息。

关于ruby - 如何在 Rack::Test 中发布数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7059023/

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