我用方法
创建了一个模块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'"。我哪里错了?
答案 0 :(得分:1)
将类模块包含到类中时,可以在此类的实例方法中使用此方法。您无法在视图中调用包含的方法,该方法显示包含模块的模型中的数据。对我来说,看起来你只是在实例方法中不使用desired_preferences
方法。
请告诉我们您尝试调用该方法的代码的安静性,如果这仍然无法帮助您。
//模块的命名不是传统的。您应该将其称为module AddingPreferences
,而不是module Adding_preferences
,该文件应命名为adding_preferences.rb
,然后尝试include AddingPreferences
答案 1 :(得分:0)
您最好花一些时间熟悉Ruby的类/模块/对象/方法继承模型,因为您构建代码的方式有一点点有点凌乱。
然而,一个简单的尝试(并且我不能保证它能够完美地工作)是以下修改:
将实例化的Pages类分配给类实例变量:
World do
@page = Pages.new
end
...然后在步骤定义中使用该实例变量...
When /^I select a desired preference$/ do
@page.desired_preferences
end
我希望有所帮助!