Sinatra测试总是404′

我有一个非常简单的Sinatra应用程序,我在测试时遇到了问题。

基本上,当我从浏览器中的测试中知道请求正常工作时,每个请求测试都会返回404。 关于问题可能是什么的任何想法?

test_helper.rb中:

ENV["RACK_ENV"] = 'test' $: << File.expand_path(File.dirname(__FILE__) + '/../lib') require 'app' Sinatra::Synchrony.patch_tests! class Test::Unit::TestCase include Rack::Test::Methods end 

app_test.rb

 require 'test_helper' class AppTest < Test::Unit::TestCase def app @app ||= Sinatra::Application end def test_it_says_hello get "/" assert_equal 200, last_response.status end end 

app.rb

 $: << 'config' require "rubygems" require "bundler" ENV["RACK_ENV"] ||= "development" Bundler.require(:default, ENV["RACK_ENV"].to_sym) require ENV["RACK_ENV"] class App < Sinatra::Base register Sinatra::Synchrony get '/' do status 200 'hello, I\'m bat shit crazy and ready to rock' end end 

的Gemfile

 source :rubygems gem 'daemons' gem 'sinatra' gem 'sinatra-synchrony', :require => 'sinatra/synchrony' gem 'resque' gem 'thin' group :test do gem 'rack-test', :require => "rack/test" gem 'test-unit', :require => "test/unit" end 

为什么我不能通常这么简单的工作?

我遇到了相同的问题,只有HTTP-404才会得到回报。

我通过在“app”函数中给出另一个返回来解决它。

 class IndexClassTest < Test::Unit::TestCase def app @app = Foxydeal #appname NOT Sinatra::Application end ... 

Sinatra::Synchrony.patch_tests!

似乎已经过时了。

在你的app_test.rb下执行此操作而不是现在的操作:

  def app @app ||= App.new end 

这将与您在开始时使用的类样式一起使用,无需切换到非类/模块化样式。

这似乎是合乎逻辑的,但您的路线配置是否正确? 如果未正确配置路由,则会向左和向右抛出404错误。

弄清楚了。

app.rb

 $: << 'config' require "rubygems" require "bundler" ENV["RACK_ENV"] ||= "development" Bundler.require(:default, ENV["RACK_ENV"].to_sym) require ENV["RACK_ENV"] class App < Sinatra::Base register Sinatra::Synchrony end get '/' do status 200 'hello, I\'m bat shit crazy and ready to rock' end 

你可以这样做:

 class AppTest < Test::Unit::TestCase def app Sinatra::Application end 

您可以通过阅读大师学习:Sinatra Internals和Rack :: Test来深入了解sinatra 测试