gpt4 book ai didi

使用 Capybara 测试渐进增强的功能

转载 作者:行者123 更新时间:2023-11-28 20:45:34 25 4
gpt4 key购买 nike

我正在使用 Capybara 来测试一个逐渐增强的网站上的功能。假设我的功能是在位置层次结构中导航。非 JavaScript 版本涉及在我们点击不同位置时获取页面的新版本。增强的 javascript 版本打开隐藏元素,或通过 Ajax 加载新信息。

我首先为非 javascript 版本编写一个测试,它看起来像这样:

When I visit the page for "UK"
And I click "London"
Then I should see the information for "London"

使用默认的 mechanize 驱动程序,测试失败,我开发功能,然后测试通过。

然后我为 javascript 版本创建了一个相同的测试,用@javascript 标记。它使用 javascript 驱动程序运行测试,并且该测试通过,因为该功能已实现。 (它通过非js流程运行)。但是,我希望此时测试的 javascript 版本失败,因为该功能尚未通过 Javascript 得到增强。

因此,我正在寻找一种好的策略来确定整个新页面是否来自服务器,并确保该功能的两个版本都有效。 (我计划将其与 pushState 集成,因此无法测试已更改的 URL)

最佳答案

我很想听听其他人对此的意见 - 我不相信 Cucumber 是完成这项工作的正确工具,因为你是从用户交互的角度描述功能,而且听起来你的渐进式实现增强将导致基本相同的用户交互。

除此之外,我认为您可能需要考虑在页面本身中构建某种测试 Hook 以帮助解决此问题。不知道你的确切情况很难说是什么,但可能是以下之一:

  • 页面的脚本增强版可以向 DOM 添加一些元素,表明增强功能处于事件状态,或者表明数据来自 AJAX 请求而不是页面加载。
  • 您可以在每次加载时(例如新的 GUID)生成一个随机页面标识符(从服务器),将其嵌入到 DOM 中并断言它在交互后没有改变(在增强版上)。这将是实现您既定目标的一种非常简单的方法(“确定整个新页面是否来自服务器”)

关于使用 Capybara 测试渐进增强的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11667243/

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