2015-10-05 22 views
0

这是我第一次做黄瓜,所以也许我问的问题没有错,但它似乎有一个更好的方式:具有相同按钮的黄瓜场景?

所以现在即时通过一个调查类网站作为我的第一个自动化任务用黄瓜。它工作得很好,但像大多数调查他们有很多的“填充再出,然后单击下一步”

所以在我的特征文件我有很多的:

Then I will click 'Next' 

与台阶相匹配(因为按钮都具有相同的文字):

Then(/^I will click 'Next'$/) do 
    click_button('Next') 
end 

所以这一步定义定义像8-9线在我的特征文件...我的猜测是好的,但我的特点文件只是看起来...丑陋?我不是用小黄瓜语言在所有的,因为这是我的第一次,但它基本上变成了很多:

THEN SELECT THAT THING FROM DROPDOWN 
THEN CLICK THIS RADIO BUTTON 
THEN SELECT THIS BUTTON 
THEN CLICK NEXT 

喜欢一遍又一遍地....我的意思是人类可读的,但它只是看起来乱?这是正确的吗?

也即时通讯不确定何时应在我的功能文件中使用“显式”?就像我应该明确说我要从下拉列表中选择'X'(或“X”,不知道它是否重要)?或者点击“下一步”按钮或选择“是”单选按钮,例如?

回答

2

的工作,你在写什么称为必要的步骤,这对黄瓜/小黄瓜确实是错误的方法。

你的步骤应该是说你在做什么而不是你在做什么。

不知道表单的细节,让我们来构造一个流程。 第1名 页2.人口统计 页面3.最喜欢的球队 第4页。最喜欢的篮球队 第5页的结果显示与其他调查者

Given I enter the "Are you a Bandwagon Fan Survey" 
When I enter my name 
And I enter my demographics 
And I choose a favorite football team 
And I choose a favorite basketball team 
Then I should be directed to the result page 
And I should see my teams ranked on a graph 

细节进入他们的受欢迎程度队你的名字和点击next应该隐藏在stepdef里面。试图测试你的应用的人不关心名字是什么,或者字段ID是什么或者类似的东西。他们只是想知道工作流程。

如果你正在做场景来获取名称页面错误,你只需修改你的小黄瓜说类似的东西。

When I enter a name too long 
Then I see a name too long error message 

When I do not enter a name 
Then I see a name missing error message 

同样,你离开过长或什么错误消息是步骤DEF(或低于)除非是为了测试场景极为重要的细节。我通常会设置工厂女孩来处理我的数据,只是使用场景文本来提取当前数据。所以我会有一个错误消息工厂,并在其中提供正确值的“name_missing”和“name_too_long”子工厂。如果我需要改变或寻找某种东西,所有东西都在同一个地方......但最重要的是它不会让我的小黄瓜变得混乱。

+0

我想我做错了哈哈。但嘿第一次....但这是极好的信息!谢谢。 就AND黄瓜而言,AND和THEN有什么区别?我假设他们都是'关键字'? – msmith1114

+0

另外即时通讯猜测我应该避免使用特定标识符IE:“然后我从下拉列表中选择'选项A',而是应该说:然后我从选择选项下拉列表中选择一个选项?也不是说你错了,但为什么写黄瓜极其糟糕吗?它似乎更具描述性?是不是一件好事...? – msmith1114

+0

“And”只是说我继续我的Given/When/Then。它自己没有真正的意义。测试设置/准备,什么时候被测试的动作,然后是动作的预期结果技术标准:在红宝石黄瓜Given/When/Then实际上被忽略,它们都是Cucumber :: RbSupport :: RbDSL#register_rb_step_definition的别名并且黄瓜会忽略匹配正则表达式中的关键字,它们只是帮助您表达步骤的意图。 –

1

是的,我想你要发送的参数步骤定义

Then I will click 'Next' 

步骤定义将

Then(/^I will click "([^"]*))*"$/) do |text| 
    click_button(text) 
end 

上面也将为

Then I will click 'OK' 
+0

没错,但即时通讯说很多按钮说'下一步'继续到下一个屏幕,所以即时通讯想知道是否有意义,只要继续说“然后点击'下一''或如果我应该更具描述性 – msmith1114

+0

没有你不必描述性的只是使用文字无论它是什么 –