Tôi đã đăng một small example dựa trên psyho's answer. Tôi cũng đã thêm hỗ trợ ActiveRecord, bao gồm cả đồ đạc thử nghiệm.
tôi cấu hình cào để chạy thử nghiệm:
# Rakefile
require_relative './app'
require 'rake'
require 'rake/testtask'
require 'sinatra/activerecord/rake'
Rake::TestTask.new do |t|
t.pattern = "test/**/*_test.rb"
end
task default: :test
Bây giờ tôi có thể chạy các bài kiểm tra như thế này:
rake
Một ví dụ thử nghiệm trông như thế này:
require_relative '../test_helper'
class BlogTest < ActiveSupport::TestCase
fixtures :blogs
def test_create
blog = Blog.create(:name => "Rob's Writing")
assert_equal "Rob's Writing", blog.name
end
def test_find
blog = Blog.find_by_name("Jimmy's Jottings")
assert_equal "Stuff Jimmy says", blog.tagline
end
end
tôi yêu cầu người trợ giúp này trong mọi tệp thử nghiệm để nối mọi thứ lên:
# test_helper.rb
require_relative '../app'
require 'minitest/autorun'
require 'active_record'
require 'rack/test'
ActiveRecord::Base.establish_connection(:test)
#Set up fixtures and such
class ActiveSupport::TestCase
include ActiveRecord::TestFixtures
include ActiveRecord::TestFixtures::ClassMethods
include Rack::Test::Methods
def app
Sinatra::Application
end
self.fixture_path = 'test/fixtures'
self.use_transactional_fixtures = true
self.use_instantiated_fixtures = false
end
Nguồn
2016-01-27 22:26:16
Tài liệu chính thức của Sinatra về thử nghiệm: http://www.sinatrarb.com/testing.html – imwilsonxu