3

私はきゅうりを学び、気に入っていますが、現在、BDD を介して続行する最善の方法がわからない機能があります: ページネーション。ゼロページ、1ページ、複数ページなどがあるシナリオが(私の考えでは)あり、特定のレコードが特定のページにあることを確認したい場合は、「次へ」ボタンがリンクではないことを確認してください。最後のページなど

私は will_paginate を使用するので、基本的には、書籍などの特定のアイテム リストに対してその機能を BDD する方法を理解したいと考えています。

私はそれを混乱させることができると確信していますが、これは一般的であるべきだと感じており、他の人が何をしたかを見たいと思っています. 誰かが記事を推奨したり、サンプル コードを教えてくれたり、自分でサンプルを撮影したりできますか?

4

1 に答える 1

19

シナリオ アウトラインを使用して機能ファイルでの繰り返しを抑えることはおそらく回避できますが、実際に実行されるシナリオの数が非常に多くなるため、予想よりも遅くなることに注意してください。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 以外のものを決定した場合、変更を検討する必要があるのは、いくつかのステップ (無効化されたページネーションなど) だけかもしれません。

そして、あなたがリンクを求めると言っているように、これも良いブログ投稿になるかもしれません ;)

于 2009-10-13T15:25:54.060 に答える