Я выполнил модульную работу с классическим приложением sinatra и переместил свои маршруты в моем приложении sinatra в отдельные файлы маршрутов согласно https://stackoverflow.com/a/5030173/111884,, однако я не могу заставить мои тесты работать.
Вот как выглядят мои файлы:
. / Web.rb
require 'sinatra'
require 'sinatra/flash'
class MyApp < Sinatra::Application
# ...
end
require_relative 'models/init'
require_relative 'helpers/init'
require_relative 'routes/init'
. / Маршруты / init.rb
require_relative 'main'
. / Маршруты / main.rb
# The main routes for the core of the app
class MyApp < Sinatra::Application
get '/' do
erb :main
end
end
. / spec / spec_helper.rb
ENV['RACK_ENV'] = 'test'
require 'minitest/autorun'
require 'rack/test'
require 'factory_girl'
# Include factories.rb file
begin
require_relative '../test/factories.rb'
rescue NameError
require File.expand_path('../test/factories.rb', __FILE__)
end
# Include web.rb file
begin
require_relative '../web'
rescue NameError
require File.expand_path('../web', __FILE__)
end
. / spec / web_spec.rb
begin
require_relative 'spec_helper'
rescue NameError
require File.expand_path('spec_helper', __FILE__)
end
include Rack::Test::Methods
def app() Sinatra::Base end
describe "Some test" do
# ...
end
Rakefile
# Test rake tasks
require 'rake/testtask'
Rake::TestTask.new do |t|
t.libs << "test"
t.libs << "spec"
t.test_files = FileList['test/factories.rb', 'test/test_*.rb', 'spec/spec_helper.rb', 'spec/**/*_spec.rb']
t.verbose = true
end
Результаты тестов:
<h1>Not Found</h1>
Кажется, он не загружает файлы ./routes/*.rb
.
Я использую Sinatra::Application
вместо Sinatra::Base
, но https://stackoverflow.com/a/5030173/111884 использует его.Здесь также упоминается http://www.sinatrarb.com/extensions.html. Я пытался изменить его на использование Sinatra::Base
, но это не помогло.
Я также пробовал Синатра проверяет всегда 404 ' и Использование огурца с модульными приложениями Sinatra , но они не работают.