Прием Капилбары DSL с MiniTest :: Spec? - PullRequest
6 голосов
/ 16 ноября 2011

В файле readme для Capybara (см. Использование Capybara с MiniTest :: Spec ) сказано, что я могу это сделать, если правильно включить модуль, но он не дает наглядных примеров того, как ... Я попытался включить модуль, как это:

class MiniTest::Spec
  include Capybara::DSL
end

... безрезультатно. Я получаю эту ошибку:

<main>': undefined method feature 'для 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

Ответы [ 3 ]

2 голосов
/ 23 ноября 2011

В этом посте есть хорошее описание о том, как заставить MinitTest :: Spec работать с капибарой.Там он в основном включает Capybara :: DSL в базовый класс всех спецификаций, как в

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

, это работает довольно хорошо в нашей установке, но, конечно, он не открывает MiniTest :: Spec.1006 *

0 голосов
/ 18 июля 2013

Вы должны добавить minitest-rails-capybara драгоценный камень к Gemfile и добавить слово "особенность" в конце описания следующим образом:

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

Специальное слово «функция» не зависит от регистра и может быть «браузером». Вы можете настроить его, добавив строку к test_helper.rb:

MiniTest::Spec.register_spec_type(/FooBar\z/i, Capybara::Rails::TestCase)
0 голосов
/ 17 января 2012

Вот простая установка test_helper для запуска функциональных и интеграционных тестов в Rails с использованием синтаксиса spec. Основанный на суть tenderlove , упомянутая выше статья re: MiniTest с Capybara , а также много повозок и портирования.

https://gist.github.com/1607879

...