Как разместить данные в Rack :: Test - PullRequest
5 голосов
/ 14 августа 2011

У меня проблемы с пониманием работы с 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'

1 Ответ

4 голосов
/ 15 августа 2011

Возможно, вам нужно включить миксины Rack :: Test в ваши отдельные классы. Я в основном использую RSpec, который не использует классы, но использует специализированный вариант Ruby's include для добавления дополнительной функциональности. Вы можете попробовать вставить include Rack::Test::Methods в определение класса HelloWorldTest. тестирование Синатры имеет больше информации для тестирования с Rack::Test.

...