【问题标题】:uninitialized constant error with SitePrism pageSitePrism 页面未初始化的常量错误
【发布时间】:2014-11-01 20:56:22
【问题描述】:

我已将此添加到我的 spec_helper:

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

我的页面是这样的:

class AboutPage < SitePrism::Page
end

我的 rspec 是这样的:

require_relative 'spec_helper'

describe 'About Page' do

  it "test" do
    about = AboutPage.new
  end

end

我不断收到的错误是:

失败:

1) 关于页面测试 失败/错误:about = AboutPage.new 名称错误: 未初始化的常量 AboutPage # ./about_spec.rb:6:in `block (2 levels) in '

【问题讨论】:

    标签: ruby rspec site-prism


    【解决方案1】:

    如果您的所有站点 prism 对象都在 spec/page_objects 中,使用 rspec,您可以将此行添加到 rails_helper.rb

    Dir[Rails.root.join('spec/page_objects/**/*.rb')].each { |f| require f }
    

    这将自动要求about_page.rb 和任何其他页面对象,包括子文件夹。

    【讨论】:

      【解决方案2】:

      看来我需要添加到我的 spec_helper.rb:

      require_relative about_page.rb
      

      必须先要求您在规范文件中使用的所有页面。

      【讨论】:

      • “spec_helper.rb”在哪里?我在我的项目中搜索它,并在 Capybara 下看到了一些参考资料,但我认为我不应该仅仅为了添加我的页面而更改 gem,是吗?即使这样,我刚刚开始一个新项目,我看不到他们添加添加到任何地方的 SitePrism 页面,但他们能够创建对象。虽然我在创建新页面时遇到了问题,但我得到了这个错误(我在这里问这个问题,因为我不确定为什么一个有效而另一个无效)。如果你们能想到我可以尝试的方法,请告诉我...
      【解决方案3】:

      如果 AboutPage 不在 controller 的根路径中,则必须使用如下命名空间调用它:

      about = SomeNameSpace::AboutPage.new
      

      【讨论】:

      • 'SomeNameSpace' 的值是多少?例如,我在哪里可以找到我的项目中的命名空间,不太确定它指的是什么...
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-08
      • 2011-09-29
      • 2017-05-14
      • 1970-01-01
      相关资源
      最近更新 更多