неопределенный метод have_content с использованием огурца / капибары / синатры - PullRequest
1 голос
/ 10 февраля 2012

Я пытаюсь проверить начало начальной страницы для приложения Sinatra, но изо всех сил пытаюсь заставить работать структуру тестирования.Поиск в гугле предполагает, что я добавляю cucumber / rails / rspec или аналогичный, но действительно ли мне нужно добавлять библиотеки, связанные с rails, когда не используется Rails?

Вот мой Gemfile

source :rubygems

gem 'sinatra', '1.3.1'
gem 'json', '1.6.3'


group :test do
  gem 'rspec', '2.7.0'
  gem 'cucumber', '1.1.3'
  gem 'capybara', '1.1.2'
  gem 'rack-test', '0.6.1'
end

и мои шаги:

Given /^a room needs to be surveyed$/ do

end

When /^I start a survey$/ do
  survey_tool.start_a_survey
end

Then /^the system will prompt me for a survey summary$/ do
  survey_tool.validate_start_a_survey_page
end

и расширения моего мира

module KnowsTheUserInterface
  class UserInterface
    include Capybara::DSL

    def start_a_survey()
      visit '/start_a_survey'
    end

    def validate_start_a_survey_page ()
      page.should have_content('Welcome')
    end
  end
  def survey_tool
     @survey_tool ||=UserInterface.new
  end

end

World(KnowsTheUserInterface)

и мой env

require File.join(File.dirname(__FILE__), '..', '..', 'lib', 'survey_tool')

require 'capybara/cucumber'
require 'capybara/rspec'
Capybara.app = Sinatra::Application
Sinatra::Application.set :environment, :test

Я получаю ошибку

Сценарий: начать опрос# features / start_a_survey.feature: 4 Учитывая, что комната должна быть опрошена # features / step_definitions / start_a_survey_steps.rb: 1 Когда я начинаю опрос # features / step_definitions / start_a_survey_steps.rb: 5 Затем система запросит у меня сводку опроса# features / step_definitions / start_a_survey_steps.rb: 9 неопределенный метод have_content' for #<KnowsTheUserInterface::UserInterface:0x007f910465fc38> (NoMethodError) ./features/support/world_extensions.rb:10:in validate_start_a_survey_page './features/step_definitions/start_a_survey_steps.rb:10:in /^the system will prompt me for a survey summary$/' features/start_a_survey.feature:7:in Затем система запросит у меня сводку опроса' * 1019

1 Ответ

0 голосов
/ 10 февраля 2012

Я думаю, что проблема в том, что вы не включили ожидания rspec.Узел Capybara имеет метод has_content?.

Это ожидание rspec, которое, когда в качестве аргумента задано значение have_content, вызывает has_content?на цели.

Так что попробуйте добавить 'rspec-ожидания' в ваш Gemfile и добавить require 'rspec/expectations' в ваш модуль.

...