2012-02-08 53 views
2

試圖設置水豚/ rspec測試簡單的sinatra應用程序,但不斷得到一個機架錯誤。與水豚/ sinatra測試機架錯誤...似乎沒有得到Sinatra應用程序通過

hello.rb的

require 'sinatra' 

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

    run! if app_file == $0 
end 

規格/ 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/

有和無束的exec運行同樣的錯誤。有任何想法嗎?

的Gemfile:

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

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

回答

6

希望這是別人試圖建立從西納特拉文檔測試非常有用。

改變

def setup 
    Capybara.app = App 
end 

Capybara.app = App 

解決了這個問題。

+0

可能指定'spec_helper.rb'是一個放置它的好地方。 – 2012-02-29 00:02:33

+0

太棒了!謝謝! FWIW,我的應用程序設置如下:'def app Sinatra ::應用程序 結束 Capybara.app = app' – 2012-11-12 17:00:24

相關問題