为什么此rspec测试会抛出“对nil:NilClass的未定义方法'call'”错误?

Mic*_*ith 4 ruby rspec

我正在尝试将rspec_api_documentation(https://github.com/zipmark/rspec_api_documentation)集成到我的sinatra应用程序中。我遇到以下错误。我显然已将错误简化为一个简单的测试,因为我认为一旦我弄清配置中有什么问题,将其重新集成到我的大型应用程序中就可以使用。

谢谢!

在app.rb中:

require 'rubygems'
require 'sinatra'

get '/index' do
  "hewoah!"
end
Run Code Online (Sandbox Code Playgroud)

在spec.rb中:

require "rspec_api_documentation"
require "rspec_api_documentation/dsl"

RspecApiDocumentation.configure do |config|
#  config.app = App
end

resource "Users" do
  get "/index" do
    example "Returns text" do
      do_request
      status.should be_ok
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

rspec spec/acceptance/spec.rb --require ./app.rb F的结果

Failures:

  1) Users GET /index Returns text
     Failure/Error: do_request
     NoMethodError:
       undefined method `call' for nil:NilClass
     # ./spec/acceptance/spec.rb:11:in `block (3 levels) in <top (required)>'

Finished in 0.02234 seconds
1 example, 1 failure

Failed examples:

rspec ./spec/acceptance/spec.rb:10 # Users GET /index Returns text
Run Code Online (Sandbox Code Playgroud)

小智 5

要注册裸露的应用程序,您需要将应用程序设置为Sinatra :: Application:

specApiDocumentation.configure do |config|
#  config.app = App 
end
Run Code Online (Sandbox Code Playgroud)

至:

specApiDocumentation.configure do |config|
   config.app = Sinatra::Application
end 
Run Code Online (Sandbox Code Playgroud)