Ruby 使用Cucumber/Capybara/sinatra的未定义方法“have_content”

Ruby 使用Cucumber/Capybara/sinatra的未定义方法“have_content”,ruby,rspec,cucumber,sinatra,capybara,Ruby,Rspec,Cucumber,Sinatra,Capybara,我正在尝试验证Sinatra应用程序初始页面的开始,但我正在努力使测试框架正常工作。谷歌搜索建议我添加cucumber/rails/rspec或类似的工具,但当我不使用rails时,我真的需要添加rails相关的库吗 这是我的档案 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 '

我正在尝试验证Sinatra应用程序初始页面的开始,但我正在努力使测试框架正常工作。谷歌搜索建议我添加cucumber/rails/rspec或类似的工具,但当我不使用rails时,我真的需要添加rails相关的库吗

这是我的档案

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
我收到的错误是

场景:开始调查功能/开始调查。功能:4 给定一个房间需要测量功能/步骤定义/开始测量步骤。rb:1 当我开始调查时,要素/步骤定义/开始调查步骤。rb:5 然后,系统将提示我输入调查摘要功能/步骤定义/开始调查步骤。rb:9 未定义的方法对命名错误有“内容” ./features/support/world\u extensions.rb:10:invalidate\u start\u a\u survey\u page' ./features/step\u definitions/start\u a\u survey\u steps.rb:10:in/^系统将提示我输入调查摘要$/'
features/start\u a\u survey。feature:7:在中,系统将提示我输入调查摘要“

我认为这里的问题是您没有包括rspec期望值。水豚节点有一个has\u内容?方法

rspec的期望是,当给定“have_content”作为参数时,调用目标上的“has_content”

因此,请尝试将“rspec期望值”添加到您的GEM文件中,并将require“rspec/期望值”添加到您的模块中