是否可以将 class 变量与 SitePrism 模块一起使用
Is it possible to use a class variable with a SitePrism module
我正在编写一个测试步骤,我需要为 Capybara 的 page.check()
方法提供名称为 checkbox_name
的复选框的名称值。我想在我的页面对象模型中将其保存为 class 变量,如下所示:
#class_name_page.rb
class ClassNamePage < SitePrism::Page
set_url "/cool/url"
element :save_button, "input#save_button"
@@checkbox = "checkbox_name"
def self.checkbox
@@checkbox
end
end
然后,我会在我的测试步骤中调用它。
# test_steps.rb
When(/^creates a field with the name "(.*?)" that is enabled$/) do |field_label|
@site_pages.class_name_page.load
@site_pages.class_name_page.set field_label
page.check(@site_pages.class_name_page.checkbox)
@site_pages.class_name_page.save_button.click
end
事情是当我尝试这个或使用实例变量时,我得到一个 undefined method
错误。有什么方法可以从页面对象模型调用此常量或在 SitePrism 中识别它?
您已将 checkbox
定义为 class 方法,但您是在实例上调用它。要按照您定义的方式访问它,您需要做
page.check(@site_pages.class_name_page.class.checkbox)
请注意,更好的解决方案可能是只在您的 ClassNamePage 中声明复选框
element :my_checkbox, :checkbox, 'checkbox_name'
然后你可以做
@site_pages.class_name_page.my_checkbox.set(true)
我正在编写一个测试步骤,我需要为 Capybara 的 page.check()
方法提供名称为 checkbox_name
的复选框的名称值。我想在我的页面对象模型中将其保存为 class 变量,如下所示:
#class_name_page.rb
class ClassNamePage < SitePrism::Page
set_url "/cool/url"
element :save_button, "input#save_button"
@@checkbox = "checkbox_name"
def self.checkbox
@@checkbox
end
end
然后,我会在我的测试步骤中调用它。
# test_steps.rb
When(/^creates a field with the name "(.*?)" that is enabled$/) do |field_label|
@site_pages.class_name_page.load
@site_pages.class_name_page.set field_label
page.check(@site_pages.class_name_page.checkbox)
@site_pages.class_name_page.save_button.click
end
事情是当我尝试这个或使用实例变量时,我得到一个 undefined method
错误。有什么方法可以从页面对象模型调用此常量或在 SitePrism 中识别它?
您已将 checkbox
定义为 class 方法,但您是在实例上调用它。要按照您定义的方式访问它,您需要做
page.check(@site_pages.class_name_page.class.checkbox)
请注意,更好的解决方案可能是只在您的 ClassNamePage 中声明复选框
element :my_checkbox, :checkbox, 'checkbox_name'
然后你可以做
@site_pages.class_name_page.my_checkbox.set(true)