鉴于我在功能/支持目录中定义了以下模块
module Api
class User
...
end
...
end
以及
module Web
class User
...
end
...
end
在我的env.rb文件中
require File.expand_path(File.dirname(__FILE__)+'/webworld')
require File.expand_path(File.dirname(__FILE__)+'/apiworld')
if ENV['USE_API'] == 1
World(Api)
else
World(Web)
end
因此,如果我尝试在步骤定义中使用此构造,如
Given /^a user is created$/ do
@user = User.new
end
运行cucumber
,我的ruby解释器会给我这个输出
未初始化的常量User(NameError) ./features/step_definitions/user_steps.rb:17: [...]
如何使这项工作?有没有办法,或者我认为我是错误的方向。我对红宝石很新 - 所以我真的不知道它能做什么以及它不能做什么。
答案 0 :(得分:2)
您不能使用World
来实现此目的。 World
用于在每个步骤def中将方法混合到self
对象中。
而不是:
if ENV['USE_API'] == 1
World(Api)
else
World(Web)
end
试试这个:
User = ENV['USE_API'] == 1 ? Api::User : Web::User