javascript - 用 Cucumber 和 Capybara 测试排序

标签 javascript ruby-on-rails cucumber capybara

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

我在想一些事情:

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

不幸的是,我不知道如何构建这些步骤。

感谢您的帮助!

最佳答案

将您正在测试的故事(您希望接近简单的英语)和测试的实际实现(隐藏在 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),然后定义按排序顺序查看列表的含义(此处您可以传递一个正则表达式,确保您在第 2 项之前看到第 1 项,等等)

或者,如果你喜欢在 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']"

关于javascript - 用 Cucumber 和 Capybara 测试排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4413865/

相关文章:

javascript - 每周五显示弹窗,24小时后隐藏

ruby-on-rails - Carrierwave: NoMethodError - #<ActionDispatch...> 的未定义方法 `permit'

javascript - 如何等待异步函数完成

javascript - 我们可以像 PHP implode ('separator' , $array) 一样对 Javascript 数组进行字符串化吗?

ruby-on-rails - 用户列表中事件记录的唯一性验证

ruby-on-rails - Rails number_to_currency 删除小数点右边的尾随零

cucumber - 如何在Cucumber中访问方案和示例名称?

cucumber - 如何在 Karate 中特定功能文件中的所有场景之后执行相同的代码行?

ruby - cucumber + 阿鲁巴岛 + Windows : Tests don't see last line of stdout?

javascript - 连接到 websocket 时如何添加 header ?