我正在学习和喜欢黄瓜,现在有一个我不确定通过 BDD 继续进行的最佳方式的功能:分页。我有场景(在我的脑海中)有零页、一页、几页等,并且我想确保某些记录在某些页面上,确保“下一步”按钮不是链接最后一页等
我将使用 will_paginate,所以基本上我想弄清楚如何为特定的项目列表(例如书籍)BDD 其功能。
我确信我可以应付它,但我觉得这应该很常见,并想看看其他人做了什么。任何人都可以推荐一篇文章,或者给我一些示例代码,或者甚至自己拍摄一个示例吗?
我正在学习和喜欢黄瓜,现在有一个我不确定通过 BDD 继续进行的最佳方式的功能:分页。我有场景(在我的脑海中)有零页、一页、几页等,并且我想确保某些记录在某些页面上,确保“下一步”按钮不是链接最后一页等
我将使用 will_paginate,所以基本上我想弄清楚如何为特定的项目列表(例如书籍)BDD 其功能。
我确信我可以应付它,但我觉得这应该很常见,并想看看其他人做了什么。任何人都可以推荐一篇文章,或者给我一些示例代码,或者甚至自己拍摄一个示例吗?
您可能可以通过使用场景大纲来减少功能文件中的重复,但请注意它会扩展到大量实际运行的场景,因此它会比您预期的要慢。假设每页有 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 以外的其他内容,那么您需要考虑更改的唯一内容可能是一些步骤(例如禁用的分页步骤)。
正如你提到的要求链接,这也可能是一篇很好的博客文章;)