鉴于我已经在我的 features/support 目录中定义了以下模块
apiworld.rb
module Api
class User
...
end
...
end
还有
webworld.rb
module Web
class User
...
end
...
end
在我的 env.rb 文件中
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 解释器会给我这个输出
uninitialized constant User (NameError) ./features/step_definitions/user_steps.rb:17: [...]
如何使这项工作有效?有没有办法或者我认为我的方向错误。我对 ruby 还很陌生 - 所以我真的不知道它能做什么和不能做什么。
最佳答案
您不能为此使用World
。 World
用于将方法混合到每个stepdef中的self
对象中。
而不是这个:
if ENV['USE_API'] == 1
World(Api)
else
World(Web)
end
试试这个:
User = ENV['USE_API'] == 1 ? Api::User : Web::User
关于ruby - 将模块中的类添加到 Cucumber World,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25264453/