gpt4 book ai didi

ruby-on-rails-3 - 如何编写 cucumber 步骤来测试元素列表是否已排序?

转载 作者:行者123 更新时间:2023-12-04 23:30:21 24 4
gpt4 key购买 nike

我需要编写一个 cucumber 场景来测试项目列表是否已排序(按名称)。我有类似的东西:

Scenario: Sort projects by name
Given there is a project called "Project B"
And there is a project called "Project A"
And there is a project called "Project C"
Given I am on the projects page
When I follow "Sort by name"
Then I should see in this order ["Project A", "Project B", "Project C"]

我添加了一个步骤,看起来像:
Given /^I should see in this order (\[.*\])$/ do |array|

end

测试页面上列出的项目是否以正确的顺序出现的最佳方法是什么?我试图通过 jQuery 获取所有项目名称:
$(function() {
var arrjs = new Array();
$("div.project-main-info").find("a:first").each(function(){
arrjs.push($(this).text());
})
});

并将它们放在一个数组中以与作为参数传递给此步骤的数组进行比较,但我不知道如何在此步骤中集成该 jQuery 代码!

谢谢!

编辑

正如 McStretch 所建议的,我尝试通过执行以下操作使用 XPath 获取 anchor :
all('a').each do |a|
if(/\/projects\/\d*/).match("#{a[:href]}")
arr_page << "...." # Need to retrieve the value out of <a href="..">VALUE</a> but don't know how..any idea?
end
end

这是正确的方法吗?我刚刚测试过,不幸的是 arr_page 没有填充任何东西(我用 [:href] 替换了“...”部分只是为了测试)!实际上我试图检查 a[:href] 的值(通过提高它)并且它是空白的!我如何更好地检查我的 anchor (假设所有的 href 都与上面提到的正则表达式匹配)?

最佳答案

首先,最好将您的最后一步写为:

Then I should see the projects in this order:
| Project A |
| Project B |
| Project C |

现在您可以轻松地将列表作为数组访问,例如
expected_order = table.raw

然后您需要将页面中的项目收集到一个数组中,正如@McStretch 所建议的:
actual_order = page.all('a.project').collect(&:text)

(这假设您的每个项目链接都有一个“项目”CSS 类以使测试更容易)。

然后您可以使用 RSpec 来比较两个数组。
expected_order.should == actual_order

如果订单不正确,这将显示失败。

关于ruby-on-rails-3 - 如何编写 cucumber 步骤来测试元素列表是否已排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5886429/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com