[英]Have Cucumber Step Verify Variable Set By A Page Object In Another Step
我正在使用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
在Cucumber步骤中,对于其中一个步骤,我具有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
,然后在您的Cucumber步骤中说类似
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
希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.