我正在使用Capybara在一个逐步增强的网站上测试功能。假设我的功能是在位置的层次结构中导航。非javascript版本包括当我们点击不同的位置时获得页面的新版本。增强的javascript版本可以打开隐藏的元素,或者通过Ajax加载新的信息。
我首先为非javascript版本编写一个测试,如下所示:
When I visit the page for "UK"
And I click "London"
Then I should see the information for "London"
使用默认的机械化驱动程序,测试失败,我开发了功能,然后测试通过。
然后,我为javascript版本创建了一个相同的测试,标记为@javascript。它使用javascript驱动程序运行测试,该测试之所以通过,是因为该功能已经实现。(它通过非js流运行)。但是,我希望Javascript版本的测试在这一点上失败,因为该功能还没有用javascript增强。
因此,我正在寻找一种好的策略来确定整个新页面是否来自服务器,并确保两个版本的功能都有效。(我计划将其与pushState集成,因此不能测试更改后的网址)
发布于 2012-07-26 21:40:38
我很有兴趣听到其他人对此的看法--我不相信Cucumber是适合这项工作的工具,因为你是从用户交互的角度来描述功能的,而且听起来你的渐进式增强的实现本质上会导致相同的用户交互。
除此之外,我认为您可能想要考虑在页面本身中构建某种测试钩子来帮助实现这一点。在不了解你的确切情况的情况下很难说出什么,但也许是以下其中之一:
发布于 2012-08-09 01:07:41
为什么你的javascript“增强版”和非增强版的工作方式一样?使用@javascript的cucumber测试应该进行测试,以确保增强功能有效。
例如,*如果javascript打开一个模式对话框,而不是跟随一个新页面的链接,则对其进行测试。*如果javascript提交了一个表单并更新了一个值,则对其进行测试。
如果没有javascript支持,这些测试将会失败。
https://stackoverflow.com/questions/11667243
复制相似问题