在ruby siteprism

时间:2016-05-09 20:40:16

标签: ruby-on-rails ruby cucumber capybara site-prism

我试图使用siteprism创建可重用的步骤定义时遇到一些问题 让我们说特色文件是

Given that im on the site
Then i should see a "stack over" text
And i should see a "ask" text
And i should see a "question" text

然后我的步骤定义将是

我希望arg1是动态的,这个逻辑将检查它是否为真

Then (/^i should see a "(.*?)" text$/) do |arg1|
@common_page = CommonLib.new
@ref = arg1.gsub(/\s+/,'')
expect(@common_page.*@ref*.text).to eq (arg1)
end

然后在我的页面上def将是

class CommonLib < siteprism::page

element :stackover, "#text_header"
element :ask, "#text_ask"
element :question, "#text_question"

我的问题是期望(@common_page。 @ref .text).to eq(arg1)

映射是错误的@ref需要使用它得到的数据,例如'stackover','ask'和'question'并在CommonLib页面中映射def

1 个答案:

答案 0 :(得分:2)

调用#text并使用eq匹配器通常是一个坏主意,因为它绕过了Capybaras内置的重试行为,并且可能导致动态更改页面的片状测试。相反,你应该使用has_text或传递给finder的:text选项

expect(@common_page.send(@ref)).to have_text(arg1)

expect(@common_page.send(@ref, text: arg1)).to be

此外,您是否有理由制作@common_page和@ref实例变量,看起来它们应该只是在测试结束时超出范围的常规变量。