让黄瓜步骤验证由页面对象在另一个步骤中设置的变量



我正在使用Cheezy的PageObject来设置一些黄瓜测试。我几乎把一切都安排好了,比如杰夫·摩根(Jeff Morgan)的书《黄瓜和奶酪》(Cucumber & Cheese)。

现在我有一个页面对象"PublishPage"设置,它有一个设置变量@tag的方法。例如,我在文件中有 publish_page.rb

Class PublishPage
def tag
#some steps left out
@tag = "123"
end
def verify_tag
#some steps left out
@tag.should include "2"
end
end

在黄瓜步骤中,对于其中一个步骤,我on_page(PublishPage).tag,然后在另一个步骤中我有on_page(PublishPage).verify_tag。在我的 env.rb 文件中,我有require 'rspec-expectations'.

问题是当我运行此代码时,我收到一个错误,说undefined method 'include' for #<PublishPage:xxxxxx>.但是,如果我将 verify_tag 方法中的代码移动到步骤中,除了它无法访问@tag之外,一切正常......

这应该像添加一样简单

include RSpec::Matchers

到页面对象。

另一种选择是通过某种方法公开@tag,然后在黄瓜步骤中说类似

on_page(PublishPage).the_displayed_tag.should include("2")

每次调用on_page(PublishPage)时,它都会实例化一个新的页面对象。您很可能会收到"无法将 nil 转换为字符串"错误,因为您正在从新对象引用实例变量,因此它的值为 nil。如果在调用 page.tag 和 page.verify_tag 之间仅实例化一次页面对象,则不应再收到该错误。

以这种方式执行操作将使用页面对象的一个实例,从而允许您在步骤定义之间保留。

When /I publish a tag/ do
#on_page(PublishPage).tag
@publish_page = PublishPage.new @browser
@publish_page.tag
end
Then /I should have my tag/ do
@publish_page.verify_tag 
end

希望这有帮助!

相关内容

  • 没有找到相关文章

最新更新