【发布时间】:2018-01-30 19:49:37
【问题描述】:
我正在使用 ruby、rspec、capybara 和 selenium 测试一个 Web 应用程序,我遇到了 uninitialized constant ActiveAdminLoginPage 异常,我不知道如何解决。
在 spec_helper.rb 我需要以下内容:
Dir[File.join(Dir.pwd, 'spec/page_objects/**/*.rb')].each { |f| require f }
我有两节课
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| require f }
使用自动加载命令。
【问题讨论】:
-
您对自动加载有什么期望?它会根据丢失的常量自动加载文件吗?无论如何,您很可能需要编写一个“包装器”,因为此功能未内置。问题是您希望它如何表现。通常,您通过
require(_relative)为每个文件加载所有依赖项。要自动完成这项工作,您需要相对严格的命名约定来计算要加载的文件。
标签: ruby selenium rspec automated-tests autoload