0

メソッドでモジュールを作成しました

module Adding_preferences
  def desired_preferences            
    @preference = %w(motabilitySpecialist newCars bodyshop filter8 filter7).each do |selection|            
      @browser.label(:for,  selection ).click    
    end
  end
end

このモジュールをクラスに含めました:

class Pages
  include Adding_preferences

  attr_accessor :browser, :preference

  def initialize
    @browser = Watir::Browser.new :ff
  end
end

World do
  Pages.new
end

Cucumber シナリオでこのメソッドを呼び出しています

When /^I select a desired preference$/ do
  desired_preferences
end

しかし、実行時に「NameError: undefined local variable or method `desired_preferences'」というエラーが表示されます。どこが間違っているのですか?

4

2 に答える 2

1

モジュールをクラスにインクルードすると、このクラスのインスタンス メソッドでこのメソッドを使用できます。モジュールを含むモデルからのデータを表示するビューで、含まれているメソッドを呼び出すことはできません。私にとってdesired_preferencesは、インスタンスメソッドでメソッドを使用しないようです。

それでも問題が解決しない場合は、メソッドを呼び出そうとするコードの平和を示してください。

// モジュールの命名は慣習的ではありません。あなたはそれをmodule AddingPreferences sintead ofmodule Adding_preferencesと呼び、ファイルに名前を付けadding_preferences.rbてから試してくださいinclude AddingPreferences

于 2012-12-19T12:14:46.087 に答える
0

Ruby のクラス/モジュール/オブジェクト/メソッドの継承モデルに慣れるのに時間を費やすことをお勧めします。コードを構造化する方法が少し面倒だからです。

ただし、簡単に試せるのは (問題なく動作することを保証するつもりはありません)、次の変更です。

インスタンス化された Pages クラスをクラス インスタンス変数に割り当てます。

World do
  @page = Pages.new
end

...そして、そのインスタンス変数をステップ定義で使用します...

When /^I select a desired preference$/ do
  @page.desired_preferences
end

それが役立つことを願っています!

于 2012-12-20T15:35:00.007 に答える