【发布时间】:2016-12-07 21:56:35
【问题描述】:
我正在使用 capybara 创建 RSpec 功能测试,用于使用 Bootstrap 选项卡的测试。
我的问题是,即使不使用click_link "tab name" capybara 仍然能够找到位于该选项卡内的元素。但是,在我的本地服务器中查看页面时,选项卡运行正常。
水豚究竟是如何找到元素的?它是否以某种方式使用了绕过引导选项卡的系统?
有没有办法解决这个问题?
可能涉及的因素:
- 出于各种原因,我正在进行的项目将这些“请求”测试称为“请求”测试,而不是功能测试。这会改变水豚的某些行为吗?
更新:
- 我目前没有设置js: true。现在正在研究可能的解决方案。
【问题讨论】:
-
如果您没有使用支持 JS 的驱动程序,那么您将使用默认的机架测试驱动程序。该驱动程序不处理大多数 CSS,再加上不支持 JS,这意味着引导选项卡根本无法运行
-
而且,是的 - 当使用 Capybara 时,它应该是一个“功能”规范而不是“请求”规范,特别是如果你使用的是普通的
require 'capybara/rspec- 将其标记为功能测试应该可以防止避免使用与同时使用 Capybara 不兼容的get/``post`/etc 方法。 -
@ThomasWalpole,谢谢,这很有帮助。然而,该项目的负责人希望我尽可能多地离开。是否绝对有必要更改功能规格,或者只是强烈推荐它?您知道在使用请求规范而不是功能规范时实际上会发生什么问题吗?
-
它只是保护您免受一些常见的初学者错误,并且您必须手动将 capybara dsl 包含到请求规范中才能在那里使用它们。只需将 type: :feature 元数据添加到特定测试就很容易了
标签: twitter-bootstrap capybara rspec-rails