/ / undefined метод `visit_page 'за # <Обект: 0x007fe29cb4c798> (NoMethodError) - рубин, краставица, пакет, рубимин, страница-обект-скъпоценен камък

неопределен метод

Текущият ми проблем възниква само при изпълнение на тест от командния ред. Когато стартирам скрипта от RubyMine, нямам проблеми, от командния ред изглежда така

характеристики на краставицата / регресия / createCloudUser.feature -r функции / стъпка_дефиниции / -r lib /

Екзекуция:

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$/"

сочи към следната страница:

#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

Ето класа:

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

проектът се създава, както следва:

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

добавен 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)

Не съм сигурен защо visit_page би довел до грешка на тази страница. Когато изпълнявам от Rubymine, нямам проблем и тестът работи успешно. Моля помогнете.

Отговори:

2 за отговор № 1

Тъй като ръчно изисквате папки, предполагам, че не се нуждаете от папката, която включва env.rb.

Като се има предвид настройката на проекта, бих предположил, че env.rb е в support папка. Трябва да включите изискване за това в командата си Краставица - т.е. -r features/support:

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

0 за отговор № 2

Тази грешка

недефиниран метод `visit_page" за # (NoMethodError)

означава, че не сте инициализирали страницата, където живее visit_page. Може да се наложи или ако правите POM, трябва да направите нещо подобно, където и да живее тази стъпка:

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