【问题标题】:How to test a scenario with javascript support and without javascript support?如何测试有 javascript 支持和没有 javascript 支持的场景?
【发布时间】:2011-05-04 16:27:29
【问题描述】:

我已经在我的应用程序中引入了 ajaxy 表排序,我想设置 cucumber 测试来测试支持 javascript 和不支持 javascript 时的功能。

我正在使用 capybara,所以如果我使用标志 @javascript,它将使用 javascript 驱动程序运行测试。他们的标志是否会使用javascript运行场景两次,一次不使用?

类似下面的...

  @test-both-javascript-and-non-javascript
  Scenario: Table Search
    When I fill in "search" with "Jonathan"
    And I press "Search"
    Then I should see the following users:
      | Jonathan | Smith | jonathan@example.com | active |

【问题讨论】:

  • 我有同样的问题,我想支持一个功能,在启用 js 时使用 ajax,在没有 js 时使用正常的页面重新加载。

标签: javascript ruby-on-rails selenium cucumber capybara


【解决方案1】:

使用@javascript 将驱动程序从默认切换到可以在您的页面上运行 javascript 的驱动程序。离开@javascript 并不意味着您正在测试“不支持javascript”或“不支持javascript”。在带有<noscript>Javascript is not supported.</noscript> 的页面上测试Then I should see "Javascript is not supported" 将使用默认驱动程序(即没有@javascript 标记)失败。

如果您真的想使用不支持的 javascript 进行测试,您应该配置一个禁用 javascript 的新驱动程序,并使用新标签(例如 @nojavascript)在 Before('@nojavascript') 块中切换到该驱动程序并切换回After('@nojavascript') 块中的默认值。然后您可以使用该标签专门编写场景,并在您想要检查何时禁用 javascript 的情况下重复场景。

【讨论】:

    【解决方案2】:

    行为真的是否相同,无论 JavaScript 是启用还是禁用?如果是这样,你为什么要使用 JavaScript? ;-)

    我怀疑实际上无论启用还是禁用 JavaScript,行为都会略有不同。因此,您应该有两个场景来描述每种情况的行为,例如JavaScript 版本是否会在您键入时提示结果?

    【讨论】:

    • 如果功能真的和分页一样,需要重新加载页面或 ajax 更新呢?
    【解决方案3】:

    我不建议在一次运行中启用和禁用 Javascript 支持。

    相反,标记您需要(或不需要,取决于您)javascript 的场景并单独运行它们。您可能会发现您需要重复一些场景以涵盖不同的行为,但这是值得的,因为您只会重复功能而不是实现。

    最后,您可能还想使用不同的驱动程序来运行此类场景,因此您可以按照所说的仅将您的测试套件包含在“一个盒子”中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-21
      • 1970-01-01
      • 1970-01-01
      • 2015-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多