我正在使用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实例?
答案 0 :(得分:1)
不要惊慌,世界已经得救了。解决方案是将Airborne和模块中的任何其他内容包装起来:
module MyHelpers
include Airborne
include Capybara::DSL
end
然后通过:
World(MyHelpers)