2017-07-15 57 views
0

如何編寫場景大綱以根據輸出10個不同變量的一個變量測試計算?黃瓜場景概要與數據表 - 未找到水豚元素

我已經試過各種選項和獲取各種錯誤包括:

Unable to find option "<frequency>" (Capybara::ElementNotFound) 

(Cucumber::ArityMismatchError) 

下面的代碼給出了水豚:: 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

你在做什麼錯在試圖寫出關於你的計算如何在你的功能中工作的細節。相反,你應該試圖做的是使用你的功能來解釋你在做什麼(它與頻率有關,但否則我不知道)。當你採用這種方法時,由於多種原因,你不必費力地指定實際結果

  1. 結果的值與這類測試無關。
  2. 把結果的情況下是困難的,容易出錯(錯別字),大大增加了維護成本

我會解釋第1點多一點。

在這種情況下你應該做的是推動你正在工作的變化頻率功能的開發。這包括兩部分:1)你有一個用戶界面供用戶改變頻率,並且爲了響應這個動作你的用戶界面顯示頻率改變的結果。

II),當你改變頻率正確的結果被計算

第一部分,應當由黃瓜的情景來驅動,這樣你就可以寫類似

Given ... When I change the frequency Then I should see a new set of results

的第二部分不應該通過在黃瓜編寫場景來測試。相反,你應該寫頻率計算的單元測試。編寫單元測試可以讓你

  • 寫快得多測試
  • 編寫更多的測試,因此您可以處理極端情況
  • 編寫測試的編程語言,所以你可以很容易地生成和任何類型的使用價值

我現在看到新用戶使用Cucumber的最大錯誤是使用場景大綱和示例表。我建議你遠離他們。每次你想用一站式的思考。問的問題

  1. 我該測試在這裏和爲什麼它很重要
  2. 我是不是想證明的東西的作品?如果是的話,我不應該使用單元測試來證明。

祝你好運:)

0

您應該只有一個實例表,您的方案大綱,你需要訪問你的大綱中的步驟「變量」。因此類似以下內容(相應地更新步驟定義)

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 |