ruby - 将模块中的类添加到 Cucumber World

标签 ruby testing cucumber automated-tests

鉴于我已经在我的 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​​ 还很陌生 - 所以我真的不知道它能做什么和不能做什么。

最佳答案

您不能为此使用WorldWorld 用于将方法混合到每个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/

相关文章:

ruby-on-rails - 关闭浏览器时 session 未被破坏 - RailsTutorial.org

ruby - 注入(inject)多个 block 参数

testing - 在不违反 SRP、OCP、DRY 的情况下编写测试

testing - 我如何将一些 jvm 选项添加到 arquillian 测试

java - 运行 JUnit 后跳过 Cucumber 步骤

java - 为什么Jruby不需要 'net/http/server'和gnu.io.PortInUseException错误

java - 将 Java 对象绑定(bind)到 ruby​​ 哈希值

testing - 有人可以帮助区分 xUnit、nUnit、mbUnit 吗?

java - 如何让 webdriver 在使用 css、xpath、标签、链接或元素 id 之间切换

testing - 使用 Cucumber & Devise gems 测试登录用户时,我是否必须每次都登录?