【问题标题】:Rack error with capybara/sinatra test... Doesn't seem to get the Sinatra app passed oncapybara/sinatra 测试的机架错误...似乎没有通过 Sinatra 应用程序
【发布时间】:2012-02-08 23:32:43
【问题描述】:

尝试设置 capybara/rspec 来测试一个简单的 sinatra 应用程序,但不断收到机架错误。

你好.rb

require 'sinatra'

class App < Sinatra::Base
  get "/" do
    "hello hello!"
  end

  run! if app_file == $0
end

spec/hello_spec.rb

require File.join(File.dirname(__FILE__), '..', 'hello.rb')

require 'rspec'
require 'capybara'
require 'capybara/dsl'
require 'capybara/rspec'

set :environment, :test

describe 'The Hello App' do

  include Capybara::DSL
  def setup
    Capybara.app = App
  end

  it "says hello when browsing /" do
    visit '/'
    page.should have_content('hello')
  end
end

注意,我也试过了

  def setup
    Capybara.app = App.new
  end

产生了同样的错误。

错误:

C:\Sites\misc\qrgen>bundle exec rspec
F

Failures:

  1) The Hello App says hello when browsing /
     Failure/Error: visit '/'
     ArgumentError:
       rack-test requires a rack application, but none was given
     # ./spec/hello_spec.rb:18:in `block (2 levels) in <top (required)>'

Finished in 0.374 seconds
1 example, 1 failure

Failed examples:

rspec ./spec/hello_spec.rb:17 # The Hello App says hello when browsing /

使用和不使用 bundle exec 时运行相同的错误。有什么想法吗?

宝石文件:

gem "sinatra"
gem "sinatra-contrib"
gem "sinatra-flash"
gem "slim"

gem "rspec"
gem "capybara"
gem "rack-test"

【问题讨论】:

    标签: ruby testing sinatra capybara rack


    【解决方案1】:

    希望这对尝试从 Sinatra 文档设置测试的其他人有用。

    变化

    def setup
      Capybara.app = App
    end
    

    Capybara.app = App
    

    解决了问题。

    【讨论】:

    • 可能会指定spec_helper.rb 是放置这个的好地方。
    • 太棒了!谢谢! FWIW,我的应用程序设置如下:def app Sinatra::Application end Capybara.app = app
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    • 2016-12-30
    • 2012-12-10
    相关资源
    最近更新 更多