/ / método indefinido `visit_page 'para # <Object: 0x007fe29cb4c798> (NoMethodError) - rubi, pepino, bundler, rubimina, page-object-gem

método indefinido `visit_page 'para # <Object: 0x007fe29cb4c798> (NoMethodError) - ruby, pepino, empacotador, rubimina, página-objeto-gema

Meu problema atual ocorre apenas ao executar o teste da linha de comando. Ao executar o script do RubyMine eu não tenho problemas, da linha de comando é semelhante a este

pepino features / regression / createCloudUser.feature -r features / step_definitions / -r lib /

Execução:

Feature: User pages Creation
Add user to system

Background:                   # features/regression/createUser.feature:4
Given you are in Cloud Staging # features/step_definitions/is_given_steps.rb:5
undefined method `visit_page" for #<Object:0x007fe29cb4c798> (NoMethodError)
./features/step_definitions/old_pages.rb:10:in `/^you are accessing User Page$/"

ele aponta para a seguinte página:

#is_given_steps.rb
When(/^you are accessing User Page$/) do
defined? $base_url
#pry
visit_page CreateCustomerPage   #Error is on this line unsure why?
end

Aqui está a aula:

require "fig_newton"
require "page-object"

class CreateCustomerPage
include PageObject
include DataMagic

page_url "https://#{FigNewton.site_url}/admin/users/new"

text_field(:first_name, :id => "user_first_name")
text_field(:last_name, :id => "user_last_name")
text_field(:user_email, :id => "user_email")

button(:create_customer, :name => "commit")
button(:cancel, :name => "button")


def customerIsCreated
raise "User Not Created" unless browser.text.include?("#{FigNewton.customer_created.to_s.strip}")
return true
end

def customerIsNotCreated
raise "User was Created" unless browser.text.include?("#{FigNewton.customer_no_created.to_s.strip}")
return true
end

def complete_user_creation (data = { })
populate_page_with data_for(:create_user, data)

create_customer
end

end

projeto é configurado da seguinte forma:

TestProj-|
|--Config
|--Feature
|--Regression
|-- *.features
|--step_definitions
|-- is_given_steps.rb
|--support
|-- env.rb
|--lib
|---pages
|--Common
|--IS
|--*.* (other files)
|-- CreateCustomerPage.rb

adicionado env.rb

#env.rb
#ADDED THIS AS TEST
$: << File.dirname(__FILE__)+"/../../lib"

$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "../../", "lib"))

require "rspec-expectations"
require "page-object"
require "selenium-webdriver"
require "fig_newton"
require "data_magic"
require "require_all"
require "time"
require "date"
require "yaml"
require "fileutils"
require "aws-sdk"

require_all "lib"


$base_url = FigNewton.sys_url #used to parse a separate Url


World(PageObject::PageFactory)

Não sei por que visit_page geraria um erro nessa página. Quando executo a partir do Rubymine, não tenho problemas e o teste é executado com sucesso. Por favor ajude.

Respostas:

2 para resposta № 1

Já que você está exigindo pastas manualmente, meu palpite é que você não está exigindo a pasta que inclui o env.rb.

Dada a configuração do projeto, acho que o env.rb está no support pasta. Você precisa incluir um requerimento para isso em seu comando Cucumber - ou seja, -r features/support:

cucumber features/regression/createCloudUser.feature -r features/step_definitions/ -r lib/ -r features/support

0 para resposta № 2

Esse erro

método indefinido `visit_page" para # (NoMethodError)

significa que você não inicializou a página em que a visit_page está. Você pode exigir ou, se estiver fazendo um POM, precisará fazer algo assim para onde quer que essa etapa esteja:

Given $/You are in Cloud Staging$/ do
@page = SomePage.new(@test_env) // initialize new object where method lives
@page.visit_page
end