2012-02-10 33 views
1

我想验证Sinatra应用程序的初始页面的开始,但我努力获得测试框架的工作。谷歌搜索建议我添加cucumber/rails/rspec或类似的,但我真的需要在不使用Rails时添加与轨道相关的库吗?未定义的方法`have_content'使用黄瓜/水豚/ 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) 

和我的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 

我收到的错误是

方案:启动调查#功能/ 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期望值。水豚节点有一个has_content?方法。

这是rspec的期望,当给出'have_content'作为参数时,调用'has_content?'在目标上。因此,请尝试将'rspec-expectations'添加到您的Gemfile中,然后将require 'rspec/expectations'添加到您的模块中。