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:未定义的局部变量或方法‘desired_preferences’”。我哪里错了?

4

2 回答 2

1

当您将模块包含到类中时,您可以在此类的实例方法中使用此方法。您不能在显示来自包含模块的模型的数据的视图中调用包含的方法。对我来说,您似乎只是不在desired_preferences实例方法中使用该方法。

如果这仍然不能帮助您,请向我们展示您尝试调用该方法的代码的和平。

// Module的命名不规范。您应该调用它而module AddingPreferences 不是,module 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 回答