ruby - 从 Ruby 中的文件名动态创建自动加载命令

标签 ruby selenium rspec automated-tests autoload

我正在使用 ruby​​、rspec、capybara 和 selenium 测试一个网络应用程序,我遇到了一个未初始化的常量 ActiveAdminLoginPage 异常,我不知道如何解决。

在 spec_helper.rb 中我需要以下内容:

Dir[File.join(Dir.pwd, 'spec/page_objects/**/*.rb')].each { |f| require f }

我有两个类(class)

spec/page_objects/products/active_admin_login_page.rb  

module Products
  class ActiveAdminLoginPage < ::ActiveAdminLoginPage
  ...
  end
end 

继承自

spec/page_objects/active_admin_login_page.rb

不幸的是,子类在父类之前加载。

如何从目录中的所有文件名动态创建自动加载命令? 我想替换这个命令:

Dir[File.join(Dir.pwd, 'spec/page_objects/**/*.rb')].each { |f|需要 f

使用自动加载命令。

最佳答案

如何使用 require 将您的依赖项加载到需要它的文件中?

require 只加载一次文件,因此您不会遇到任何副作用。

或者,更好的是,您可以使用 auto_load,它在后台使用 require,但它以更智能的方式实现

autoload :ActiveAdminLoginPage, 'active_admin_login_page'

关于ruby - 从 Ruby 中的文件名动态创建自动加载命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45819092/

相关文章:

javascript - 带 Rails 的入门级 javascript : updating a div on form submit (3. 1/jquery)

ruby-on-rails - 如何在哈希栏中搜索单词

ruby-on-rails - zipruby 还是 ruby​​zip?

json - Selenium 2 的安全性?

ruby - `require' : cannot load such file -- spec_helper (LoadError)

ruby - 如何使用 Ruby 有效地匹配来自 2 个数组的数据

xpath - Selenium IDE 中 XPath 表达式中的括号

ruby-on-rails - 如何在 Rails 引擎的 rspec 测试中从父应用程序访问模型?

ruby-on-rails - 来自真实世界应用程序的 rails rspec 代码 (/spec)

xpath - WebDriver通过组合的xpath查找元素