如何根据输出10个不同变量的变量编写方案大纲来测试计算?
我尝试了各种选项并遇到各种错误,包括:
Unable to find option "<frequency>" (Capybara::ElementNotFound)
和
(Cucumber::ArityMismatchError)
下面的代码给出了Capybara :: ElementNotFound错误
Scenario Outline:
When I select "<frequency>" frequency
And I press recalculate
Then I should see total amount and percentages recalculated by <frequency> frequency on the results page
Examples:
| frequency |
| weekly |
| daily |
Examples:
| tax | sub-total | total |
| 38.25 | 114.74 | 191.24 |
| 3.19 | 9.56 | 15.94 |
步骤定义
When(/^I select "([^"]*)" frequency$/) do |frequency|
select "<frequency>", from: "frequency"
end
Then(/^I should see total amount and percentages recalculated by <frequency> frequency on the results page$/) do |table|
expect(results_page).to have_content("<tax>")
expect(results_page).to have_content("<sub_total>")
expect(results_page).to have_content("<total>")
end
表格标记
<form action="change_result_frequency" method="post">
<label for="frequency">Frequency</label>
<select name="frequency" id="frequency">
<option value="yearly">yearly</option>
<option value="monthly">monthly</option>
<option selected="selected" value="weekly">weekly</option>
<option value="daily">daily</option>
</select>
<input type="submit" name="commit" value="Recalculate">
</form>
我是黄瓜和水豚的新手,所以我不确定如何用数据表编写场景轮廓。我做错了什么?
答案 0 :(得分:0)
您所做错的是尝试撰写有关计算在您的功能中的工作方式的详细信息。相反,你应该尝试做的是使用你的功能来解释你在做什么(它与频率有关,但我不知道)。当您采用这种方法时,由于多种原因,您无需在场景中指定实际结果
我会更多地解释第1点。
在这种情况下,您应该做的是推动您正在使用的更改频率功能的开发。这包括两部分
i)您有一个用户界面可以更改频率,并且为了响应此操作,您的用户界面会显示频率变化的结果。
ii)当您更改频率时,会计算出正确的结果
第一部分应该由黄瓜场景驱动,所以你可以编写像
这样的东西
Given ...
When I change the frequency
Then I should see a new set of results
第二部分不应该通过在Cucumber中编写场景来测试。相反,你应该为进行频率计算的东西编写单元测试。编写单元测试允许你
我认为Cucumber的新用户现在最大的错误就是使用场景大纲和示例表。我建议你远离他们。每次你想使用一站并思考。提出问题
答案 1 :(得分:0)
您的Scenario Outline应该只有一个示例表,您需要访问大纲中的“变量”。所以类似于以下内容(相应地更新了步骤定义)
Scenario Outline:
When I select "<frequency>" frequency
And I press recalculate
Then I should see <tax>, <sub-total>, and <total> recalculated on the results page
Examples:
| frequency | tax | sub-total | total |
| weekly | 38.25 | 114.74 | 191.24 |
| daily | 3.19 | 9.56 | 15.94 |