0

アカウントの種類ごとに、特定のシナリオを何度でも実行しようとしています。他のスレッドで、「フックの周り」がDRYの方法で行うための最良のオプションであることがわかりました。

以下は私のコードです:

require 'watir-webdriver'
require 'page-object/page_factory'
require 'page_navigation'
require 'data_magic'
require_relative 'pages/login_page'

Before do
  beforeCodeBlock
  ...
end

Around('@hooks_test') do|scenario, block|
  DataMagic.load('default.yml')     
  account_type = {"listener" => DataMagic.yml["listener_data"],
              "free" => DataMagic.yml["free_data"],
              "premium" => DataMagic.yml["premium_data"]}

  account_type .each {|key, value|
  puts "Running scenario: #{scenario.name} as #{key} user"

  visit_page(LoginPage)
  on_page(LoginPage).sign_in(value["username"],value["password"])  #Login as
  block.call

  }
end

After do
  afterCodeBlock
  ...
end

したがって、機能ファイルを実行すると、次の出力とそれに続くエラーが表示されます。

Running scenario: Hooks test as listener user
   undefined method `visit_page' for nil:NilClass (NoMethodError)
   /myProject/features/support/hooks.rb:38:in `block (2 levels) in   <top (required)>'
   /myProject/features/support/hooks.rb:35:in `each'
   /myProject/features/support/hooks.rb:35:in `Around'

visit_page実行が PageObject gem に属するメソッドを処理するまで、すべてが期待どおりに機能しているようです。

4

1 に答える 1

1

ここにはおそらく 2 つの問題があります。

まず、PageObject::PageFactoryモジュールを登録しなかったため、エラーが表示されますWorld。必要な後にこの行を追加します:

World(PageObject::PageFactory)

次に、Aroundブロックを使用して同じシナリオを複数回呼び出しています。私が見ていることから、これを行っているのは、ログインしているさまざまなユーザーで同じ動作を実行するためです。動作がまったく同じである場合、それを 3 回実行して何を達成しているのでしょうか?

于 2013-05-13T10:20:07.850 に答える