如何测试具有javascript支持且没有javascript支持的场景?

时间:2011-05-04 16:27:29

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

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

我正在使用水豚,所以如果我使用旗帜@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 |

3 个答案:

答案 0 :(得分:2)

使用@javascript将默认设置中的驱动程序切换为可在您的网页上运行javascript的驱动程序。离开@javascript并不意味着你正在测试“当javascript不受支持”或“没有javascript支持”。使用Then I should see "Javascript is not supported"<noscript>Javascript is not supported.</noscript>页面上对Before('@nojavascript')进行测试将无法使用默认驱动程序(即没有@javascript标记)。

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

相反,标记您需要(或不需要,直到您)javascript的场景并运行这些场景。您可能会发现需要重复一些场景来涵盖不同的行为,但这是值得的,因为您只会重复该功能而不是实现。

最后你可能想要使用不同的驱动程序来运行这样的场景,所以你可以按照说法只在“一个盒子”中包含你的测试套件。