参考:http://recipes.sinatrarb.com/p/testing/rspec
Rspec的各种expect 在这里;http://rspec.info/documentation/3.8/rspec-expectations/
非常简单。 特别好用。
1. 有个app.rb
require 'sinatra'
require 'sinatra/json'
require 'sinatra/activerecord'
Dir[File.join(__dir__, 'model', '*.rb')].each { |file| require file }
get '/' do
"Hi there, can I help you ?"
end
2. 有个spec/spec_helper.rb
require 'rack/test'
require 'rspec'
ENV['RACK_ENV'] = 'test'
require File.expand_path '../../app.rb', __FILE__
module RSpecMixin
include Rack::Test::Methods
def app() Sinatra::Application end
end
RSpec.configure { |c|
c.include RSpecMixin
# 为了使用.should
c.expect_with(:rspec) { |c| c.syntax = [:should, :expect] }
}
3. spec/app_spec.rb
require File.expand_path '../spec_helper.rb', __FILE__
describe "My Sinatra Application" do
it "应该可以访问欢迎页" do
get '/'
# Rspec 2.x
expect(last_response).to be_ok
end
end
运行方式: bundle exec rspec spec/app_spec.rb
需要导入数据库结构的话,使用:
1. 生成一个 新的 db/schema.rb (可以通过其他项目的rails 命令来生成, ,或者在sinatra下, $ rake db:schema:dump
2. 在测试环境下加载这个文件: $ rake db:schema:load APP_ENV=test (注意这里不是RAILS_ENV)
单独使用rspec
1. Gemfile:
gem 'rspec'
2. bundle install --binstubs
3. ./bin/rspec --init
就可以了