2012-02-10 3 views
1

Я пытаюсь проверить начало начальной страницы для приложения Sinatra, но я изо всех сил пытаюсь заставить рабочую среду тестирования работать. Googling вокруг предлагает добавить огурец/рельсы/rspec или аналогичные, но действительно ли мне нужно добавить библиотеки, связанные с рельсами, когда вы не используете Rails?неопределенный метод `have_content 'с использованием Cucumber/Capybara/sinatra

Вот мой 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) 

и мой окр

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

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

Ошибка я получаю это

Сценарий: Начать обзор # особенности/start_a_survey.feature: 4 Учитывая помещение необходимо обследоваться # функции/step_definitions/start_a_survey_steps.rb: 1 Когда я начинаю обзор # функции /step_definitions/start_a_survey_steps.rb:5 Затем система предложит мне за краткое исследование # особенности/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 Затем система предложит мне резюме обзора «

ответ

0

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

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

Итак, попробуйте добавить «rspec-ожидания» в свой Gemfile и добавьте require 'rspec/expectations' в свой модуль.

Смежные вопросы