The*_*tix 1 ruby rspec sinatra
我以前从未使用过Sinatra,也从来没有手动配置过Rspec(总是使用Rails的预写脚本),但是我想尝试一下。
但是我遇到了麻烦,我设法使RSpec可以工作,但是我遇到了错误,只是让它识别Sinatra的方法。
我想知道改用它是否更好Rack::Test。
我当前的问题是atm:
1)rake失败Don't know how to build task 'default'
2)当我使用rspec它失败与undefined method get for #<RSpec::ExampleGroups::MySinatraApplication:0
现在显然我在做错事,但是我不知道该怎么办。我正在跟踪一些发现的问题,但是很好,我只是做得不好。
RakeFile:
require 'rspec/core/rake_task'
RSpec::Core::RakeTask.new do |task|
task.rspec_opts = ['-c', '-f progress', '-r ./spec/spec_helper.rb']
task.pattern = './spec/**/*_spec.rb'
end
Run Code Online (Sandbox Code Playgroud)
spec_helper.rb
require 'rspec'
require 'rack/test'
RSpec.configure do |conf|
conf.include Rack::Test::Methods
end
Run Code Online (Sandbox Code Playgroud)
app_spec.rb
ENV['RACK_ENV'] = 'test'
require '../../myapp'
require 'rspec'
require 'rack/test'
describe 'My Sinatra Application' do
include Rack::Test::Methods
def app
Sinatra::Application
end
it "says hello" do
get '/' do
expect(last_response).to be_ok
expect(last_response.body).to eq('Hello World')
end
end
it 'should allow access to main page' do
end
it 'should list every site from the links file' do
# get '/' do
# Links.each do |link|
#
# end
# end
end
end
Run Code Online (Sandbox Code Playgroud)
第一次编辑:
myapp.rb
require 'dotenv'
Dotenv.load
require 'yaml'
require 'sinatra'
require 'helpers'
require 'actions'
require 'main'
Run Code Online (Sandbox Code Playgroud)
main.rb
class Ops_JustGiving < Sinatra::Base
Links = YAML::Load(File.open('..\\links.yml'))['sites']
set :root, File.dirname __FILE__
helpers Sinatra::Ops_JustGiving::Helpers
register Sinatra::Ops_JustGiving::Actions
end
Run Code Online (Sandbox Code Playgroud)
您的规范助手实际上应该是:
require 'rspec'
require 'rack/test'
RSpec.configure do |conf|
conf.include Rack::Test::Methods
end
Run Code Online (Sandbox Code Playgroud)
然后在您的个别测试中:
ENV['RACK_ENV'] = 'test'
require 'hello_world' # <-- your sinatra app name
require 'rspec'
require 'rack/test'
describe 'My Sinatra Application' do
include Rack::Test::Methods #<---- you really need this mixin
def app
Sinatra::Application
end
it "says hello" do
get '/'
expect(last_response).to be_ok
expect(last_response.body).to eq('Hello World')
end
end
Run Code Online (Sandbox Code Playgroud)
使该工作正常进行,然后可以在添加更多测试时进行重构。
| 归档时间: |
|
| 查看次数: |
1106 次 |
| 最近记录: |