2011-08-04 10 views
5

मैं अपने टेस्ट पर्यावरण को रुपेक + कैपिबरा के साथ स्थापित कर रहा हूं, लेकिन मुझे यह अपरिभाषित last_response मिलता है। मैं वेब और एसओ के माध्यम से खोज रहा था। मुझे संस्करण के बारे में कुछ चीजें मिलीं, रूबीगेम स्रोत इत्यादि के बजाय गिट रेपो का उपयोग करें ... लेकिन यह मेरे लिए एक सुराग नहीं बदलता है।रुपेक + कैपिबारा: अपरिभाषित last_response

यहाँ

पश्व-अनुरेखन: rspec --backtrace कल्पना/नियंत्रक/API/plist/providers_listing_spec.rb विफलताएं:

gem 'ruby-prof' # perf 
gem 'rspec-rails', :git => 'git://github.com/rspec/rspec-rails.git' 
gem 'shoulda' # Shoulda 
gem 'factory_girl_rails' #=> mocking 
gem 'capybara', :git => "http://github.com/jnicklas/capybara.git" 
gem 'database_cleaner' 

gem 'rb-fsevent', :require => false if RUBY_PLATFORM =~ /darwin/i #guard mac dependency 

gem 'guard-livereload' # browser reloading 
gem 'guard-rspec' 
gem 'guard-test' 
gem 'growl' #grow notification 

मैं:

1) Api::Plist::ProvidersController should return a successfull plist containing a list of providers 
Failure/Error: last_response.status.shoud be_success 
NameError: 
    undefined local variable or method `last_response' for #<RSpec::Core::ExampleGroup::Nested_1:0x105658e10> 
# ./.gems/ruby/1.8/gems/rspec-expectations-2.6.0/lib/rspec/matchers/method_missing.rb:9:in `method_missing' 
# ./.gems/ruby/1.8/gems/actionpack-3.0.5/lib/action_dispatch/testing/assertions/routing.rb:175:in `method_missing' 
# ./spec/controllers/api/plist/providers_listing_spec.rb:19 
# /Library/Ruby/Gems/1.8/gems/rspec-core-2.6.4/lib/rspec/core/example.rb:48:in `instance_eval' 
# /Library/Ruby/Gems/1.8/gems/rspec-core-2.6.4/lib/rspec/core/example.rb:48:in `run' 
# /Library/Ruby/Gems/1.8/gems/rspec-core-2.6.4/lib/rspec/core/example.rb:107:in `with_around_hooks' 
# /Library/Ruby/Gems/1.8/gems/rspec-core-2.6.4/lib/rspec/core/example.rb:45:in `run' 
# /Library/Ruby/Gems/1.8/gems/rspec-core-2.6.4/lib/rspec/core/example_group.rb:294:in `run_examples' 
# /Library/Ruby/Gems/1.8/gems/rspec-core-2.6.4/lib/rspec/core/example_group.rb:290:in `map' 
# /Library/Ruby/Gems/1.8/gems/rspec-core-2.6.4/lib/rspec/core/example_group.rb:290:in `run_examples' 
# /Library/Ruby/Gems/1.8/gems/rspec-core-2.6.4/lib/rspec/core/example_group.rb:262:in `run' 
# /Library/Ruby/Gems/1.8/gems/rspec-core-2.6.4/lib/rspec/core/command_line.rb:24:in `run' 
# /Library/Ruby/Gems/1.8/gems/rspec-core-2.6.4/lib/rspec/core/command_line.rb:24:in `map' 
# /Library/Ruby/Gems/1.8/gems/rspec-core-2.6.4/lib/rspec/core/command_line.rb:24:in `run' 
# /Library/Ruby/Gems/1.8/gems/rspec-core-2.6.4/lib/rspec/core/reporter.rb:12:in `report' 
# /Library/Ruby/Gems/1.8/gems/rspec-core-2.6.4/lib/rspec/core/command_line.rb:21:in `run' 
# /Library/Ruby/Gems/1.8/gems/rspec-core-2.6.4/lib/rspec/core/runner.rb:80:in `run_in_process' 
# /Library/Ruby/Gems/1.8/gems/rspec-core-2.6.4/lib/rspec/core/runner.rb:69:in `run'` 

यहाँ के परीक्षण के लिए मेरी मणि config है मैं mongo db से निपटने के लिए डेटाबेस_क्लेनर का उपयोग कर रहा हूं ...

और अब तक मैं वास्तव में उपयोग नहीं करता:

require 'spec_helper' 

describe Api::Plist::ProvidersController, :type => :api do 
    let (:user) {Factory(:confirmed_user)} 
    let (:api_account) {user.new_api_account} 
    let (:api_token) {api_account.authentication_token} 
    let (:email) {api_account.email} 

    it "should return a successfull plist containing a list of providers" do 
    get 'index', :auth_token => api_token, :email => email 
    last_response.status.shoud be_success 
    last_response.body.should eql({:sucess => true}.to_plist.to_s) 
    end 
end 

यहाँ पोस्ट मैं पहले से ही पढ़ा है, भले ही वे webrat के बारे में मुख्य रूप से बात करते हैं ...:

हैं किसी को भी पता होना चाहिए कि क्या करना है, कौन सा मणि संस्करण उपयोग करना है?

उत्तर

5

आप जोड़ सकते हैं ...

config.include Rack::Test::Methods 
अपने spec_helper.rb को

। यह last_response ... और अन्य विधियों ... सभी आपके परीक्षणों को जोड़ देगा।

चूंकि आपको शायद ऐसा करने की आवश्यकता नहीं है, इसलिए एक बेहतर विचार है कि उन्हें मॉड्यूल से आवश्यकतानुसार शामिल किया जाए। अपने spec/समर्थन फ़ोल्डर में एक सहायक मॉड्यूल बनाएँ। फिर इस कोड जोड़ें:

module ApiHelper 
    include Rack::Test::Methods 
    def app 
    Rails.application 
    end 
end 

RSpec.configure do |c| 
    c.include ApiHelper, type: :api 
end 

अब :type => :api आप वास्तव में कुछ करना होगा, अर्थात् है कि कल्पना करने के लिए रैक जोड़ने :: टेस्ट :: तरीके।

describe Api::Plist::ProvidersController, :type => :api do 
    # etc 
end 
0

यह रुपेक की गलतफहमी थी। "last_response" मौजूद नहीं है। यह एक समर्थन मॉड्यूल या जो कुछ भी के माध्यम से प्रदान किया जाना चाहिए।

0

last_response एक रैक/परीक्षण की बात है। यदि आप इसका उपयोग नहीं कर रहे हैं, तो इसे हटाने की जरूरत है।

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