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 测试