2011-11-16 24 views
6

El archivo Léame para Capibara (ver Using Capybara with MiniTest::Spec) dice que puedo hacer esto si incluyo el módulo correctamente, pero no da ningún ejemplo ilustrativo de cómo ... He intentado incluir el módulo así:Capybara Acceptance DSL con MiniTest :: Spec?

class MiniTest::Spec 
    include Capybara::DSL 
end 

... en vano. Sigo recibiendo este error:

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

¿Cómo puedo conseguir que funcione, ya que está escrito en el código comentado de salida?


spec/aceptación/api/reward_terms_spec.rb: especificación

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 

/aceptación/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 

Respuesta

2

Hay una buena descripción en this post para saber cómo hacer que MinitTest :: Spec se ejecute con capibara. Allí se incluye, básicamente, la capibara :: DSL en la clase base de todas las especificaciones como en

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

esto funciona bastante bien en nuestra configuración, pero por supuesto que no vuelve a abrir el Minitest :: Spec.

+0

Sí, vi a ese puesto, pero que sólo le permite usar los comparadores Capybara, no la DSL BDD para las pruebas de aceptación, que es lo que soy después de ... – neezer

+0

En [enlace] (https://github.com/jnicklas/capybara) la parte del Capybara DSL está contenida en la sección "Uso de Capybara con RSpec", ahí dice "Finalmente, Capybara también viene con un DSL incorporado para crear pruebas descriptivas de aceptación: ". Sin embargo, después de presentar DSL en acción dice: "' feature' es de hecho solo un alias para 'describe ...,: type =>: request',' background es un alias para 'before', y' scenario' para 'it'." Por lo tanto, no tiene suerte si desea usarlo con MiniTest, ya que es una función solo de RSpec, pero puede intentar definir sus propios alias – Patru

+0

. La publicación de blog vinculada se ha eliminado de Posterous, pero aquí está en el Archivo de Internet: http://web.archive.org/web/20130314201201/http://code-ningja.posterous.com/73460416 –

0

se debe añadir minitest-rails-capybara joya para el Gemfile y añadir una palabra "función" al final de la descripción de la siguiente manera:

 
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 

La palabra especial "característica" es el caso incensitive, y puede ser "navegador". Se puede personalizar mediante la adición de una línea a la test_helper.rb:

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