为什么黄瓜测试应用程序无法访问 1.4.x 中的 Sinatra 设置,而不是 1.3.x 中的设置?



我正在尝试从Sinatra 1.3升级。X到1.4.2。specs运行正常,但是Cucumber失败了:

undefined local variable or method `settings' for #<RechargeWorld:0x007ffbd606ba60> (NameError)

env.rb的相关部分如下所示:

  class RechargeWorld
    include Capybara::DSL
    include RSpec::Expectations
    include RSpec::Matchers
    def db
      @db ||= CouchRest.database(settings.db)
    end
  end

其中一些代码(注意:我添加了db方法)是由cucumber-sintra生成的,它在1.3中工作得很好。但在任何版本1.4.x中都失败。最新版本的cucumber-sinatra产生的env.rb基本相同。

应用程序在Github上可用。

设置哈希值在1.3。X和1.4可能导致这种情况?我做错了吗?

我查看了官方的Cucumber+Sinatra指南,注意到app方法返回Sinatra::Application

所以我把env.rb部分改成了:

class RechargeWorld
  include Capybara::DSL
  include RSpec::Expectations
  include RSpec::Matchers
  def db
    @db ||= CouchRest.database(Sinatra::Application.settings.db)
  end
end

效果很好

最新更新