2017-03-03 85 views
0

我正在编写一个测试步骤,我需要给Capybara的page.check()方法命名我的复选框名称为checkbox_name。我想将它保存为一个类变量,在我的网页对象模型像这样:是否有可能与SitePrism模块一起使用类变量

#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中标识它?

回答

1

您已将checkbox定义为类方法,但您在实例上调用它。要访问它,你所定义的方式你需要做的

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) 
+0

这样做,谢谢! – James

相关问题