如何在黄瓜轨道的背景下扩展世界?

时间:2015-03-25 13:47:38

标签: ruby-on-rails cucumber

我正在使用rails-api gem构建一个使用Rails的API。我想用黄瓜轨道和宝石'Airborne'来测试它。

Airborne附带了一些很好的辅助方法来测试API响应,我想在我的步骤定义中访问它。我之前在Sinatra中做过这种事情,在/features/env.rb文件中配置相对简单。

然而,看起来,使用rails-cucumber,“世界”的创建发生在某个地方的幕后,我不知道如何扩展它以在创建后使用Airborne模块。

我尝试了以下内容:

Airborne.configure do |config|
  config.rack_app = Rails.application
end

Cucumber::Rails::World.extend(Airborne)

When(/^I make a request for information about an event$/) do
  get "/events/1"
end

Then(/^I receive the information as a JSON$/) do
  expect_json {} 
end

我仍然在#expect_json上获得NoMethodError,这是一种空降方法。

所以我的问题是:如何在cucumber-rails的上下文中扩展World实例?

1 个答案:

答案 0 :(得分:1)

不要惊慌,世界已经得救了。解决方案是将Airborne和模块中的任何其他内容包装起来:

module MyHelpers
  include Airborne
  include Capybara::DSL
end

然后通过:

World(MyHelpers)