2011-11-16 9 views
6

Capybara (Using Capybara with MiniTest::Spec देखें) के लिए रीडमी का कहना है कि मैं यह कर सकता अगर मैं सही ढंग से मॉड्यूल शामिल हैं, लेकिन यह कैसे के किसी भी निदर्शी उदाहरण देना नहीं है ... मैं इस तरह मॉड्यूल सहित कोशिश की है:मिनीटेस्ट :: स्पेक के साथ कैपिरा स्वीकार्य डीएसएल?

class MiniTest::Spec 
    include Capybara::DSL 
end 

... कोई फायदा नहीं हुआ। मैं इस त्रुटि प्राप्त हो रही:

<main>': undefined method feature' for main:Object (NoMethodError)

मैं के रूप में यह टिप्पणी की-आउट कोड में लिखा है कि यह काम कैसे मिल सकता है?


कल्पना/स्वीकृति/API/reward_terms_spec.rb:

require "#{Dir.pwd}/spec/acceptance/acceptance_helper" 

# this syntax works... 

describe 'reward terms acceptance test' do 
    include Capybara::DSL 

    describe '#index' do 
    specify { 
     visit '/reward_terms' 
     # ... 
    } 
    end 
end 

# this syntax doesn't work... 

# feature 'RewardTerms', %q{ 
# In order to get all reward terms available to me 
# As an API client 
# I want to list all active RewardTerms 
# } do 

# background do 
#  set_api_headers 
# end 

# scenario 'RewardTerm index' do 
#  visit '/reward_terms' 
#  ... 
# end 
# end 

कल्पना/स्वीकृति/acceptance_helper.rb:

ENV["RAILS_ENV"] = "test" 
require "#{Dir.pwd}/config/environment" 

require 'minitest/autorun' 
require 'capybara/rails' 

def set_api_headers(device_id = 'abcd1234') 
    header 'Accept', 'application/json' 
    header 'X-Device-Id', device_id 
end 

उत्तर

2

this post में एक अच्छा वर्णन नहीं है कैपिबारा के साथ आपको मिनीटटेस्ट :: स्पीक रन कैसे बनाना चाहिए। वहां उन्होंने मूल रूप से Capybara :: के रूप में

class RequestSpec < MiniTest::Spec 
    include Rails.application.routes.url_helpers 
    include Capybara::DSL 
end 

में इस बल्कि अच्छी तरह से काम करता है हमारे सेटअप में सभी चश्मा के आधार वर्ग में डीएसएल भी शामिल है, लेकिन निश्चित रूप से यह MiniTest :: युक्ति फिर से खोलना नहीं है।

+0

हाँ, मुझे लगता है कि पोस्ट को देखा है, लेकिन यह केवल आप Capybara matchers, स्वीकृति परीक्षण के लिए नहीं BDD डीएसएल है, जो कि मैं क्या कर रहा हूँ का उपयोग करने की अनुमति देता है के बाद ... – neezer

+0

[लिंक] (https://github.com/jnicklas/capybara) पर कैपिबरा डीएसएल पर हिस्सा "आरएसपीईसी के साथ कैपिबरा का उपयोग" पर अनुभाग में शामिल है, इसमें कहा गया है "अंत में, कैपिबरा भी आता है वर्णनात्मक स्वीकृति परीक्षण बनाने के लिए डीएसएल में निर्मित के साथ: "। हालांकि डीएसएल को कार्रवाई में पेश करने के बाद यह कहता है: "फीचर' वास्तव में 'वर्णन ...,: टाइप =>: अनुरोध' के लिए एक उपनाम है, 'पृष्ठभूमि'' पहले 'के लिए उपनाम है, और' परिदृश्य ' 'it' के लिए।" तो यदि आप मिनीटेस्ट के साथ इसका उपयोग करना चाहते हैं तो आप भाग्य से बाहर हैं क्योंकि यह एक आरएसपीसी-केवल सुविधा है, लेकिन आप अपने स्वयं के उपनामों को परिभाषित करने का प्रयास कर सकते हैं – Patru

+0

लिंक किए गए ब्लॉग पोस्ट को पोस्टरस से हटा दिया गया है, लेकिन यहां यह है इंटरनेट पुरालेख: http://web.archive.org/web/20130314201201/http://code-ningja.posterous.com/73460416 –

0

spec वाक्यविन्यास का उपयोग कर रेल में कार्यात्मक & एकीकरण परीक्षण चलाने के लिए यहां एक सरल test_helper रिग है। tenderlove, article mentioned above re: MiniTest with Capybara के साथ-साथ & स्रोत-पोरिंग के बहुत सारे टिंकरिंग के आधार पर।

https://gist.github.com/1607879

0

आप Gemfile को minitest-rails-capybara मणि जोड़ना चाहिए और विवरण के अंत के लिए एक शब्द "सुविधा" जोड़ने के इस प्रकार है:

 
feature 'RewardTerms feature', %q{ 
    In order to get all reward terms available to me 
    As an API client 
    I want to list all active RewardTerms 
} do 

    background do 
    set_api_headers 
    end 

    scenario 'RewardTerm index' do 
    visit '/reward_terms' 
    #... 
    end 
end 

विशेष शब्द "सुविधा" मामले incensitive है, और "ब्राउज़र" हो सकता है। आप test_helper.rb करने के लिए एक पंक्ति जोड़कर अनुकूलित कर सकते हैं:

 
MiniTest::Spec.register_spec_type(/FooBar\z/i, Capybara::Rails::TestCase)