为什么Cucumber测试应用程序无法访问1.4.x中的Sinatra设置但不能访问1.3.x?

时间:2013-04-08 07:41:29

标签: ruby sinatra cucumber

我试图从Sinatra 1.3.x升级到1.4.2。规格运行良好,但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.x中运行良好,但在1.4.x版本中失败。最新版本的cucumber-sinatra基本上产生了相同的env.rb

该应用为available on Github

1.3.x和1.4之间的设置哈希是否有任何改变可能导致此问题?我做错了吗?

1 个答案:

答案 0 :(得分:0)

我查看了official Cucumber+Sinatra guide并注意到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

它就像一个魅力。