2011-08-14 18 views
5

मुझे रैक :: टेस्ट के साथ काम करने के तरीके को समझने में समस्याएं आ रही हैं, मेरे पास 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' 

उत्तर

4

हो सकता है कि आप अपने व्यक्तिगत वर्गों में रैक :: टेस्ट मिश्रणों को शामिल करने की आवश्यकता है। मैं मुख्य रूप से आरएसपीईसी का उपयोग करता हूं, जो कक्षाओं का उपयोग नहीं करता है, लेकिन अतिरिक्त कार्यक्षमता खींचने के लिए रूबी के include के एक विशेष संस्करण का उपयोग करता है। आप अपने HelloWorldTest केस क्लास परिभाषा के अंदर include Rack::Test::Methods डालकर डालने का प्रयास कर सकते हैं। सिनात्रा के testing में Rack::Test के साथ परीक्षण के लिए अधिक जानकारी है।

+0

दरअसल, मेरे परीक्षण में मिश्रित जोड़ना और कुछ चर को संशोधित करना इसे ठीक करता है। धन्यवाद! – ferostar

संबंधित मुद्दे