シナリオ アウトラインを使用して機能ファイルでの繰り返しを抑えることはおそらく回避できますが、実際に実行されるシナリオの数が非常に多くなるため、予想よりも遅くなることに注意してください。1 ページに 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 |
Next と同様に、Previous/First/Last のリンク状態を確認するために同様のシナリオを使用できます。また、必要に応じて、次のページのシナリオと同様に、ページ リンクのシナリオにフォローアップ クリックを追加することもできます。また、追加の例を追加して、ページネーションが正確に 5 であることを確認することもできます。これは、ページごとのページネーションが 6 の場合でも、私が選んだ例に合格するためです。ページネーション機能をチェックするための目標が正確に何であるかによって異なります。
最終的に will_paginate 以外のものを決定した場合、変更を検討する必要があるのは、いくつかのステップ (無効化されたページネーションなど) だけかもしれません。
そして、あなたがリンクを求めると言っているように、これも良いブログ投稿になるかもしれません ;)