2012-12-06 15 views
7

आरएसपीईसी और कैपिबरा के साथ एक नए रेल 3.2.9 ऐप पर काम करना।कैपेबरा अनुरोध चश्मे में क्यों उपलब्ध नहीं है?

मैं Gemfile में निम्नलिखित है:

gem 'rspec-rails' 
gem 'capybara' 

और कल्पना/spec_helper.rb में निम्नलिखित:

require 'rspec/rails' 
require 'capybara/rspec' 

और कल्पना/अनुरोध/asdf_spec.rb में:

require 'spec_helper' 
describe 'Asdf' do 
    describe "GET /asdfs" do 
    it "should list asdfs" do 
     visit asdfs_path 
    end 
    end 
end 

यह परीक्षण विफल रहा है:

Failure/Error: visit asdfs_path 
NoMethodError: 
undefined method `visit' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_2::Nested_1:0x007fa7b68961a0> 
# ./spec/requests/asdfs_spec.rb:19:in `block (4 levels) in <top (required)>' 

तो ऐसा लगता है कि कैपिबरा लोड नहीं हो रहा है। एक, क्यों नहीं? मुझे लगता है कि मैंने यह एक ही चीज़ पहले एक दर्जन बार किया है ... शायद बेवकूफ कुछ खाली हो रहा है।

+0

क्या आप Capybara 2.0 का उपयोग कर रहे हैं? –

+1

हाँ मैं था! मेरा google-search-fu कमजोर था। –

उत्तर

13

तो यह एक capybara संस्करण 2 परिवर्तन किया गया हल करती है। मैं इस पाया:

http://alindeman.github.com/2012/11/11/rspec-rails-and-capybara-2.0-what-you-need-to-know.html

जो बताते हैं:

Capybara को 2.0, capybara डिफ़ॉल्ट RSpec अनुरोध चश्मा में से उपलब्ध नहीं होगा अपग्रेड करने पर। इसके बजाए, एक नया प्रकार का स्पेक - फीचर स्पेक - कैपिबरा के उपयोग के लिए बनाया गया है।

2.0 Capybara में नवीनीकृत करने के लिए आपको कुछ चीजें करने की आवश्यकता होगी: किसी भी परीक्षण है कि करने के लिए कल्पना/अनुरोधों से capybara उपयोग करने के लिए 2.12.0 या अधिक से अधिक

  • ले जाएँ

    • अपग्रेड rspec-रेल कल्पना/सुविधाओं। Capybara परीक्षण यात्रा विधि का उपयोग करते हैं और आमतौर पर पृष्ठ के खिलाफ जोर देते हैं।
  • +0

    ** फीचर/फीचर्स ** से ** फीचर/फीचर्स ** पर अपने फीचर टेस्ट को स्थानांतरित करने से पहले अंतरिम में, आप अपने सूट को 'टाइप:: फीचर' के साथ टैग करके फिर से गुजर सकते हैं। –

    +0

    कैपिबरा 1.1.2 ने कुछ मैचर्स भी प्रदान किए जो अनुरोध चश्मा (जैसे है_सेलेक्टर) में काफी उपयोगी थे, जो अब तक उपलब्ध नहीं हैं जब तक कि आप अपने अनुरोध चश्मा को चश्मे की सुविधा में परिवर्तित न करें। –

    -2

    यह मुद्दा कैपिबरा मणि में ही है।

    gem 'capybara', '1.1.2' इस मुद्दे (संस्करण 2.0.x विफल रहता है)

    +13

    हाँ, यह संस्करण 2.x मुद्दा था। लेकिन चलो, जवाब डाउनग्रेड नहीं है। :) –

    3

    बस के साथ Capybara 2.x में नवीनीकृत ये समस्या हो रही किसी के लिए कुछ अतिरिक्त जानकारी। Upgrading to Capybara 2 अनुभाग के तहत rspec-rails दस्तावेज़ देखें।

    मूल रूप से, कैपिबरा डीएसएल (पृष्ठ & विज़िट) का उपयोग करने के लिए आपको अपने मौजूदा चश्मे spec/features निर्देशिका में ले जाना चाहिए। तो आप स्वीकृति परीक्षणों में केवल page & visit का उपयोग कर सकते हैं। कोई और पेज & नियंत्रक में जाएं और चश्मे का अनुरोध करें। नियंत्रक में केवल रैक-टेस्ट डीएसएल (get|post|put|delete|head/response.body) की अनुमति है और चश्मे का अनुरोध करें।

    यह वह जगह है नहीं की सिफारिश की लेकिन वहां काम कर रहे अपने चश्मा रखने के लिए के रूप में वे कर रहे हैं एक तरीका है:

    RSpec.configure do |c| 
        c.include Capybara::DSL, :example_group => { 
        :file_path => "spec/requests" 
        } 
    end 
    

    डॉक्स कथन है कि यदि आप इस मार्ग तो जाने के लिए आप अभिप्रेत व्यवहार अधिभावी कर रहे हैं और आप कर रहे हैं जोखिम लेना

    और निश्चित रूप से इसे Capybara 2.x पर अपग्रेड न करने के कारण के रूप में न बनाएं। फ़ीचर चश्मा उपयोग करने में आसान हैं और पढ़ने में आसान हैं। feature सिर्फ describe के लिए एक उपनाम है, backgroundbefore के लिए उपनाम, it के लिए scenario, और let के लिए given है।

    आशा है कि इससे नए बदलावों से किसी को भ्रमित करने में मदद मिलेगी।

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