在Linux而不是Windows上运行ruby规范时出现未初始化的常量错误

时间:2018-10-22 19:55:50

标签: ruby linux windows rspec

我在ruby项目中通过rspec运行了一系列硒/水豚规格。到目前为止,我一直在Windows机器上完全没有问题地运行它们。现在,我正在尝试迁移到Linux计算机,并且到处都遇到了问题。

在我的每个测试文件都需要的spec_helper.rb中,我从下面开始。但是,当我在Linux服务器上运行测试时,我遇到了许多未初始化的常量错误。基本上,尽管未在其他地方初始化过代码,但所命中的第一类却未声明为初始化。

# frozen-string-literal: true

require 'rspec'
require 'capybara/rspec'
require 'capybara-screenshot/rspec'
require 'capybara/dsl'
require 'selenium-webdriver'
require 'site_prism'

Dir[File.dirname(__FILE__) + '/helpers/*.rb'].each do |helper|
  require helper
end

Dir[File.dirname(__FILE__) + '/page_objects/mixins/*.rb'].each do |page_object|
  require page_object
end
Dir[File.dirname(__FILE__) + '/page_objects/sections/*.rb'].each do |page_object|
  require page_object
end

Dir[File.dirname(__FILE__) + '/page_objects/*/*.rb'].each do |page_object|
  require page_object
end

一个这样的堆栈跟踪:

加载./demo_spec.rb时发生错误。

Failure/Error: iframe :export_modal, Pages::ExportModal, :xpath, '//*[@id="qPopupWindow"]/iframe'

NameError:
  uninitialized constant Pages::ExportModal
# /dr01/bamboo/xml-data/build-dir/DEVSYS-RSM2FT-JOB1/spec/page_objects/pages/entity_gl_periods.rb:18:in `<class:EntityGlPeriods>'
# /dr01/bamboo/xml-data/build-dir/DEVSYS-RSM2FT-JOB1/spec/page_objects/pages/entity_gl_periods.rb:2:in `<module:Pages>'
# /dr01/bamboo/xml-data/build-dir/DEVSYS-RSM2FT-JOB1/spec/page_objects/pages/entity_gl_periods.rb:1:in `<top (required)>'
# /dr01/bamboo/xml-data/build-dir/DEVSYS-RSM2FT-JOB1/spec/spec_helper.rb:22:in `block in <top (required)>'
# /dr01/bamboo/xml-data/build-dir/DEVSYS-RSM2FT-JOB1/spec/spec_helper.rb:21:in `each'
# /dr01/bamboo/xml-data/build-dir/DEVSYS-RSM2FT-JOB1/spec/spec_helper.rb:21:in `<top (required)>'
# ./demo_spec.rb:1:in `<top (required)>'
No examples found.

1 个答案:

答案 0 :(得分:0)

堆栈跟踪告诉您错误位于spec_helper的第21行

此处某处的错误:

Dir[File.dirname(__FILE__) + '/page_objects/*/*.rb'].each do |page_object|
  require page_object
end

如果您能够进入服务器控制台,请查看其实际返回的内容并与Windows环境进行比较。

Dir[File.dirname(__FILE__) + '/page_objects/*/*.rb']

您的需求加载顺序似乎未正确触发。您尝试从中读取/加载的目录上是否可能存在权限错误?