0

我正在尝试使用 Capybara、Cucumber 和 SitePrism 建立一个基本框架,但是当我开始测试时,我不断收到错误消息“未初始化的常量 SitePrism (NameError)”。

宝石文件:

gem 'cucumber', '2.3.3'
gem 'capybara', '2.6.2'
gem 'selenium-webdriver', '2.53.0'
gem 'rspec'
gem 'site_prism'
gem 'mime-types', '>2.6', '<2.99.1'

环境文件

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

require_rel '../features/pages'
require_rel '../features/classes'

World(Capybara::DSL)
World(Capybara::RSpecMatchers)

登录页面

class LoginPage < SitePrism::Page
end

登录类

class Login

def initialize
  @current_page = LoginPage.new
end 

该错误与“class LoginPage < SitePrism::Page”有关。RubyMine 也找不到要访问的 SitePrism 声明。我在设置中遗漏了什么吗?

4

2 回答 2

1

您的错误看起来与“需要”相关,但这是我如何通过以下方式工作的: https ://github.com/thuss/standalone-cucumber

有一段时间没有使用黄瓜了,但是我看到我的 Rails 项目中当前实现的“页面”的方式:

  • 在“功能/支持/页面”中创建一个文件
  • 遵循命名空间约定
  • 使用模块,然后通过 World() 方法导入。

也许这可能有效:

功能/支持/页面/login_page.rb

module Pages
 module LoginPage

  class LoginPageObj < SitePrism::Page
  end

  def login_obj
   LoginPageObj.new
  end

 end
end
World(Pages::LoginPage)

环境文件:

require 'capybara'
require 'capybara/cucumber'
require 'site_prism'


Capybara.configure do |config|
  config.default_driver = :selenium
  config.app_host   = 'http://www.google.com'
end

World(Capybara::DSL)
World(Capybara::RSpecMatchers)

请注意我不必明确要求任何页面类,看起来 Cucumber 可能需要它?

  • 请注意,这是没有 RubyMine 的(我不使用它)。如果它在没有 RubyMine 的情况下工作,我会指出这一点。
于 2016-03-28T16:58:03.190 回答
0

所以你遇到这个问题的原因是因为文件被自动加载。只需确保首先require获得 gem 文件,以便理解命名空间

于 2019-02-22T13:04:44.820 回答