現在の問題は、コマンドラインからテストを実行する場合にのみ発生します。 RubyMineからスクリプトを実行する場合、問題はありません。コマンドラインからは次のようになります。
cucumber features / regression / createCloudUser.feature -r features / step_definitions / -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から実行すると問題はなく、テストは正常に実行されます。助けてください。
回答:
回答№1は2あなたが手動でフォルダを必要としているので、私の推測では、あなたが含まれているフォルダを必要としないことです env.rb
.
プロジェクトのセットアップを考えると、 env.rb
の中に support
フォルダ。 Cucumberコマンドにこれに対するrequireを含める必要があります-すなわち -r features/support
:
cucumber features/regression/createCloudUser.feature -r features/step_definitions/ -r lib/ -r features/support
回答№2の場合は0
このエラー
#(NoMethodError)の未定義メソッド「visit_page」
は、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