使用Cucumber和Capybara进行测试排序

3

有没有办法使用Cucumber和Capybara测试列表的排序。排序是通过javascript在客户端完成的。

我想到的方案是:

Then I should see "first element" and then I should see "second element"

很遗憾,我不知道如何构建这些步骤。

感谢您的帮助!


4
“使用Cucumber和Capybara测试排序”听起来像个糟糕笑话的开头...;-) - T.J. Crowder
1个回答

7

将要测试的故事(需要接近于普通英语)和测试实现(隐藏在step_definitions中)分离开是一个好主意。

有几种方法可以解决这个问题,具体取决于你想测试什么。在第一种情况下,cuke测试非常易读,并且归结为正确实现步骤定义:

Given that I am on page xyz
And I have a list
Then I should see the list in sorted order

在这种情况下,你需要定义什么是列表(如果需要可以在步骤定义中将其指定为 @list),然后定义什么是按排序顺序查看列表(这里可以传递一个正则表达式来确保您先看到项目1,然后是项目2等等)。
或者,如果你喜欢在cuke测试中更冗长的方式,你可以像这样做:
Given that I am on page xyz
Then I should see /item1.*item2.*item3/

假设列表已经被填充。

根据列表所在的位置,您可能需要使用within范围参数。

请记住,cucumber非常适合功能和集成测试,但可能不是单元测试排序(查看所有边缘情况)的正确工具。要在单元测试级别测试排序,我强烈建议使用QUnit。由于QUnit测试是静态页面,请尝试使用以下技巧将测试作为capybara的一部分运行:

Given I am on "/test/path/to/qunit/tests"
Then I should see "Whatever Title You have Assigned"
And I should see "0" within "//p[@id='qunit-testresult']/span/[@class='failed']"

正则表达式 - 为什么我没想到呢? - Silviu Postavaru

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接