gpt4 book ai didi

ruby - 有没有更简单的方法来编写以下 cucumber 测试?

转载 作者:太空宇宙 更新时间:2023-11-03 16:36:01 26 4
gpt4 key购买 nike

我正在使用 cucmber 来测试一个 php 应用程序,它实际上运行良好。

我有一个 cucmber 功能,它使用以下步骤检查页面中是否存在链接:

Then /^I should see a link that contains "(.+)"$/ do |link|
assert !!(response_body =~
/<a ([\w\.]*="[\w\.]*" )*href="(http:\/\/)?([\w\.\/]*)?(#{link})/m), response_body
end

现在,这行得通了,但它非常丑陋和复杂。

最初我尝试使用 xpath 东西:

response_body.should have_xpath("//a[@href=\"#{link}\"]")

但是如果我检查指向“blah.com”的链接,那么它就不会匹配“http://blah.com”——这会破坏测试的全部目的。因此我切换到正则表达式。

那么有没有更简单的方法来编写不依赖于复杂正则表达式的测试?

干杯。

编辑:在费尽周折之后......我确实找到了一种在我的页面上查找图像的不那么困惑的方法:

response_body.should include(image)

图像字符串设置为类似“myimage.png”的位置 - 当然,如果实际文本“myimage.png”在页面上而不是图像上,这将中断。一定会有更好的办法。我正在考虑使用 Hpricot 看看我是否可以解析 html 并提取我想要测试的属性,然后使用正则表达式对其进行测试,但这一切看起来都太……臃肿了。

最佳答案

像这样的东西应该可以工作:

response_body.should have_css("a[href*='#{link}']")

详情请看这里: http://www.w3.org/TR/css3-selectors/#attribute-substrings

编辑:看起来 webrat 的等效方法是 have_selector,所以:

response_body.should have_selector("a[href*='#{link}']")

关于ruby - 有没有更简单的方法来编写以下 cucumber 测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7581364/

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