我正在學習和喜歡黃瓜,現在有一個功能我不確定通過BDD進行分析的最佳方式:分頁。我有一些場景(在我的腦海中),其中有零頁,一頁,幾頁等,以及我想確保某些記錄在某些頁面上的位置,確保「下一步」按鈕不是鏈接時最後一頁等。黃瓜測試分頁功能
我將使用will_paginate,所以基本上我想弄清楚如何爲特定的項目列表(例如書籍)BDD其功能。
我敢肯定,我可以混淆它,但我覺得這應該是常見的,並希望看到別人做了什麼。任何人都可以推薦一篇文章,或者將我指向一些示例代碼,甚至可以自己做一個例子嗎?
我正在學習和喜歡黃瓜,現在有一個功能我不確定通過BDD進行分析的最佳方式:分頁。我有一些場景(在我的腦海中),其中有零頁,一頁,幾頁等,以及我想確保某些記錄在某些頁面上的位置,確保「下一步」按鈕不是鏈接時最後一頁等。黃瓜測試分頁功能
我將使用will_paginate,所以基本上我想弄清楚如何爲特定的項目列表(例如書籍)BDD其功能。
我敢肯定,我可以混淆它,但我覺得這應該是常見的,並希望看到別人做了什麼。任何人都可以推薦一篇文章,或者將我指向一些示例代碼,甚至可以自己做一個例子嗎?
您可能會忘記使用scenario outlines來保持重複在您的功能文件中,但請注意,它會擴展到大量實際運行的場景,所以它會比您想要的慢期望。像這樣的東西應該可以工作,假設每頁5本書。我將把步驟定義作爲練習,但它們應該非常簡單。
我還應該提一下,我並沒有真正運行這個,所以用一粒鹽來解決任何語法錯誤。
Feature: Book Browsing Pagination
Scenario: No results
Given I have 0 books
When I view all books
Then I should see "No results" on the page
Scenario: Some results
Given I have 3 books
When I view all books
Then I should see "Book 1"
And I should see "Book 2"
And I should see "Book 3"
Scenario: Page links
Given I have <count> books
When I view all books from page <page>
Then I should see a link to page <target page>
Examples:
| count | page | target page |
| 8 | 1 | 2 |
| 8 | 2 | 1 |
| 13 | 1 | 2 |
| 13 | 1 | 3 |
| 13 | 2 | 1 |
| 13 | 2 | 3 |
| 13 | 3 | 1 |
| 13 | 3 | 2 |
Scenario: Page links for current page
Given I have <count> books
When I view all books from page <page>
Then I should see a disabled pagination link to page <page>
Examples:
| count | page |
| 8 | 1 |
| 8 | 2 |
| 13 | 1 |
| 13 | 2 |
| 13 | 3 |
Scenario: Next Page links
Given I have <count> books
When I view all books from page <page>
Then I should see a link "Next Page"
When I click "Next Page"
Then I should be on page <next page> # assert against query params maybe?
# alternately, to keep page requests down, one could use something like:
# Then I should see a link "Next Page" going to "?p=<next page>"
Examples:
| count | page | next page |
| 8 | 1 | 2 |
| 13 | 1 | 2 |
| 13 | 2 | 3 |
Scenario: Next Page links on last page
Given I have <count> books
When I view all books from page <page>
Then I should see a disabled pagination link "Next Page"
Examples:
| count | page |
| 8 | 2 |
| 13 | 3 |
類似的情況,可以用於檢查上一頁/第一/最後爲接下來的鏈路狀態,你可以添加一些後續點擊此網頁的鏈接類似於在下一頁的情況是,如果你在做方案通緝。您可能還需要添加額外的示例來檢查您的分頁是否恰好爲5,因爲如果每頁的分頁數爲6,我選擇的示例也會通過。取決於您的目標是檢查分頁功能。
如果你最終決定了除了will_paginate以外的東西,那麼你需要考慮改變的唯一的東西可能是幾個步驟(如禁用分頁的步驟)。
正如你所提到要求的鏈接,這可能使一個很好的博客文章也;)
哇。正是我在找什麼。感謝花時間提供這樣一個清晰而詳細的答案。 – SingleShot 2009-10-13 16:55:19
你複製什麼will_paginate已經IMO測試,其中大部分是一件壞事。它已經過測試,最好假設它有效。 – 2009-10-09 12:36:48
我不想單元測試will_paginate,我想通過Cucumber驅動我的應用程序的行爲。功能與實現無關,因此我應該可以將will_paginate替換爲其他內容,重新運行我的Cucumber測試(不需要修改它們),並且從客戶的角度瞭解應用程序的工作情況。 – SingleShot 2009-10-09 15:19:51