水豚与 :js => true 导致测试失败

2024-03-27

我对 Capybara 和 Rails 测试都很陌生,所以如果这是一个简单的答案,请原谅我。

我有这个测试

it "should be able to edit an assignment" do
    visit dashboard_path
    select(@project.client + " - " + @project.name, :from => "assignment_project_id")
    select(@team_member.first_name + " " + @team_member.last_name, :from => "assignment_person_id")
    click_button "Create assignment"
    page.should have_content(@team_member.first_name)
end

它按原样通过,但如果我添加 :js => true 它会失败

cannot select option, no option with text 'Test client - Test project' in select box 'assignment_project_id'

我正在使用 FactoryGirl 创建数据,并且当测试在没有 JS 的情况下通过时,我知道该部分正在工作。

我尝试过使用默认的 JS 驱动程序和 :webkit 驱动程序(安装了 capybara-webkit)

我想我还不太明白水豚打开JS是做什么的。

为什么打开 JS 测试会失败?


我已阅读 Capybara 自述文件https://github.com/jnicklas/capybara https://github.com/jnicklas/capybara它解决了我的问题。

事务装置仅在默认的 Rack::Test 驱动程序中工作,但是 不适用于 Selenium 等其他驱动程序。黄瓜可以解决这个问题 自动,但使用 Test::Unit 或 RSpec,您可能必须使用 数据库清理宝石。看这个解释 https://groups.google.com/d/msg/ruby-capybara/JI6JrirL9gM/R6YiXj4gi_UJ(以及代码解决方案2 http://opinionatedprogrammer.com/2011/02/capybara-and-selenium-with-rspec-and-rails-3/#comment-220 and 解决方案3 http://pastie.org/1745020)了解详情。

但基本上它是一个线程问题,涉及 Capybara 在运行非机架驱动程序时拥有自己的线程,这使得事务固定装置能够在另一个上下文中使用第二个连接。因此驱动程序线程永远不会与正在运行的 rspec 处于同一上下文中。

幸运的是,这可以很容易地解决(至少对我来说是这样),在 DatabaseCleaner 策略中进行动态切换即可使用:

RSpec.configure do |config|
  config.use_transactional_fixtures = false

  config.before :each do
    if Capybara.current_driver == :rack_test
      DatabaseCleaner.strategy = :transaction
    else
      DatabaseCleaner.strategy = :truncation
    end
    DatabaseCleaner.start
  end

  config.after do
    DatabaseCleaner.clean
  end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

水豚与 :js => true 导致测试失败 的相关文章

  • 生产中的 Webpack:为什么 React Native 会出现错误?

    我有一个测试应用程序 安装了以下内容 dependencies express 4 14 0 react 15 3 2 react dom 15 3 2 devDependencies babel 6 5 2 babel core 6 18
  • 在 ExpressJS 中通过管道传送远程文件

    我想读取远程图像并显示它 我可以保存文件 但无法正确显示代码 理想情况下 我只想直接传递文件而不进行处理 不确定是否需要 tmp 文件步骤 此代码不显示任何内容 没有错误 我也尝试了 res pipe response var url ht
  • 将变换值添加到元素上已有的当前变换中?

    假设我有一个div那有translateX and translateY动态添加的值 div class object child0 style width 50px height 50px 我想添加rotateY 20deg 到当前的变换
  • React Native 将样式设置为 State

    我想用backgroundColor of style1作为一种状态 并在函数中改变它change 我怎样才能访问style1 我的观点是调用该函数change从另一个函数 使按钮将其颜色更改为黄色 然后在一段时间后再次将其颜色更改为蓝色
  • 为具有可变内容的内联块元素提供相同的高度?

    我有 4 个宽度固定但内容可变的内联块元素 并且我希望所有这些元素具有相同的高度 最大元素的高度 请参见这个jsfiddle http jsfiddle net kKZXj 我应该如何实现这个目标 如果仅使用 css 无法做到这一点 那么使
  • KineticJS - 将舞台缩放到视口

    我正在努力将默认分辨率设置为 1366x756 我会根据视口来放大和缩小它 类似于此处显示的示例 http blogs msdn com b davrous archive 2012 04 06 modernizing your html5
  • Angular 2 最终版本路由器单元测试

    如何使用 karma 和 jasmine 对 Angular 2 0 0 版中的路由器进行单元测试 这是我的旧单元测试在版本 2 0 0 beta 14 中的样子 import it inject injectAsync beforeEac
  • 将服务连接到现有的流星帐户

    我正在设置一个流星应用程序 其中涉及使用用户名和密码进行注册 然后希望将该帐户与 Facebook 和 Twitter 连接起来 我只需使用帐户包即可轻松启动并运行第一部分 但是当我有一个登录用户调用 Meteor loginWithFac
  • 在 Chrome 中检索浏览器语言

    我一直在尝试让 momentjs 正确检测浏览器语言并本地化时间显示 按照使用 Moment js 进行区域设置检测 https stackoverflow com questions 25725882 locale detection w
  • RxJS - 从可观察对象中获取最后 n 个元素

    我想从可观察对象中获取最后 3 个元素 假设我的时间线是这样的 a b c d e f g h i j gt where a b c d e f g h i j are emitted values 每当发出新值时 我想立即获取它 因此它可
  • 使用 test() 通过正则表达式进行信用卡验证

    我正在尝试完成一些作业 看来这本书可能做错了 我有一个简单的 html 页面 允许用户在我们的例子中选择信用卡 美国运通卡 然后 用户输入一个数字并根据正则表达式评估该数字 我的问题最终是当 test 计算它返回的数字时是布尔值还是字符串
  • Firefox OS 后台服务

    我想构建一个应用程序 用户可以通过它输入一些设置 并且应用程序将启动后台服务来根据这些设置执行一些任务 我只想在模拟器中运行应用程序和后台服务 我知道它需要 认证 模式才能运行后台服务 但我现在不考虑在 Firefox Marketplac
  • 当脚本是从加载的脚本动态创建的 DOM 节点时,脚本 onload 和 window.onload 的顺序是否定义良好?

    File loader js function main if typeof window undefined var script window document createElement script script src https
  • HTML if 语句在 CDN 失败时加载本地 JS/CSS

    当从 CDN 或任何外部服务器加载 CSS JS 文件时 有可能 即使概率很低 由于外部故障而丢失该文件 在这种情况下 html 页面将因缺乏适当的 CSS 和 JS 而被损坏 有没有一种实用的方法可以在 CDN 故障时加载本地版本 IF
  • 如何获取 svgElement 的比例?

    我正在研究 svg div style width 300 height 300 div
  • Rails - 使链接与 ajax 一起工作

    我有一个链接 应该使用 ajax 加载它旁边的部分内容 而无需重新加载页面 链接在这里 这是链接应该转到的控制器 class ProfilesController lt ApplicationController def profile f
  • CKEditor TypeError:c[a] 在 CodeIgniter 中未定义

    我正在尝试在基于 codeigniter 的网站中安装 CKEditor 并且我已按照本教程进行操作 Codeigniter 教程中的 CKEditor http nukium com developpement php framework
  • 在javascript中定义Date.parse的格式[重复]

    这个问题在这里已经有答案了 我正在使用 Date parse 将字符串转换为 JavaScript 中的日期 但是 如果字符串看起来像 10 11 2016 它会被解释为 2016 年 10 月 11 日 我需要将其解释为 2016 年 1
  • 禁用 Materialise Carousel 上的触摸

    看起来以前没有人问过这个问题 因为我几乎在互联网上寻找一个非常简单的答案 如何禁用在物化轮播上向左 向右滑动的功能 在 Materialize js 添加 编辑 var allowCarouselDrag true value functi
  • 截断段落前 100 个字符并隐藏段落的其余内容,以通过更多/更少链接显示/隐藏其余内容

    我有一个超过 500 个字符的段落 我只想获取最初的 100 个字符并隐藏其余部分 我还想在 100 个字符旁边插入 更多 链接 单击更多链接时 整个段落应显示并编辑文本 更多 到 更少 单击 更少 时 它应切换行为 段落是动态生成的 我无

随机推荐

  • 在 Windows 上使用 CMD 从文件目录中删除特定子字符串

    我经常使用免费的在线无损文件压缩器来节省磁盘空间 并使传输和推送存储库变得更容易 我对压缩器的主要问题是它在每个文件名的末尾附加 min 由于种种原因 想通过覆盖的方式来替换原来的文件 而不是删除旧文件并保留新文件 使用 新 名称 对于我的
  • 在 IntelliJ Idea 13 中创建/配置 Derby JDBC 客户端

    很抱歉这个 也许 愚蠢的问题 我需要在我的 java 项目中创建一些本地数据库 因此我决定使用 Apache Derby Client 我正在与IntelliJ IDEA 13 旗舰版我的问题是我不知道如何创建本地数据库 Jetbrains
  • 将 XML 数据保存到 SQL Server 的最佳方法是什么?

    有没有一条非常直接的直接路线 即SQL Server可以读取XML 或者 最好解析 XML 并通过 ADO Net 以通常的方式将其作为单独的行或批量更新进行传输 我意识到可能有一些解决方案涉及大型复杂的存储过程 虽然我并不完全反对这一点
  • 如何授予 cron 作业文件权限?

    我已经为我的网站设置了 cron 选项卡 但我的邮件 ID 中收到了类似于脚本 权限被拒绝 的消息 谁能帮我告诉我可能是什么问题 谢谢 您在设置 crontab 时遇到此错误吗 或者从 cron 运行的脚本 如果在设置 crontab 时
  • 在“资源”参数中多次指定该项目。 “资源”参数不支持重复项目

    编译我的 Visual Studio C 项目时 出现以下错误 The item obj Debug SampleProject Forms MDIMain resources was specified more than once in
  • 单击/聚焦时更改 Select 组件的 InputLabel 颜色

    如果您查看此处的组件 https material ui com components selects https material ui com components selects 您会看到单击时 标签向上移动并最小化 但也会更改颜色
  • Bitbucket API 2 - 在团队项目中创建存储库

    我的 bitbucket 帐户上有一个团队 myteam 其中包含一个名为mainproject 每当我想在其中创建存储库时 我只需要执行以下命令行 curl X POST v u myaccount passwd https api bi
  • 访问数组中的对象

    我有以下输出 Array 0 gt stdClass Object id gt 20 news title gt Startup finance docs in GitHub news url gt http venturebeat com
  • 如何判断一个字符是否是元音

    我正在尝试使用vector substr 但我不知道这是否可能 有谁知道另一种方法可以做到这一点 我的目标是取出一个向量中的单词并将其与第一个元音分开 任何帮助表示赞赏 我的代码如下所示 include
  • 从日志文件解析 Log4j 布局 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有可以读取所有内容的开源工具布局实现 http logging apache org log4j
  • 如何学习 SQL Server 索引调优? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 在编写 tsql 查询时学习索引调优的最佳实用方法是什么 我有 VS2008 SQL Express 有
  • 如何以编程方式验证 Play 商店上的应用程序版本?

    我在 Play 商店中有一个应用程序 我想执行以下操作 当用户启动应用程序时 它应该验证 Play 商店中的应用程序版本是否与安装的版本相同 如果不是 我将显示一个对话框来警告这种情况 并提供重定向到 Play 商店进行更新的选项 我知道游
  • 接受用户输入

    我目前正在 Malbolge 中编写一款文字冒险类型游戏 谁能告诉我如何在 Malbolge 中接受用户输入 我能够将文本输出到屏幕上 但是 我似乎不知道如何接受输入 GHJUYGHJKLKUJHM MJ 6AG9F5D8V A8 gt 7
  • PHP 正则表达式中的 [\S\s]* 是什么意思?

    是什么意思 s S 在 PHP 的正则表达式中 做 s S 实际上匹配每个字符串相同 默认情况下 与新行不匹配 s S 是解决这个问题的一个技巧 这在 JavaScript 中很常见 但在 PHP 中你可以使用 s标记 to 以使点匹配所有
  • Kendo Ui 数据源添加功能无法正常工作

    我定义了一个 Kendo 数据源 如下所示 它正在填充 ListView 中的值 var datasourceAppList new kendo data DataSource transport create function optio
  • .NET Framework 中的“AssemblyTitle”属性

    实际用途是什么AssemblyTitle属性 MSDN 表示它指定了程序集的描述 并且程序集标题是一个可以包含空格的友好名称 Visual Studio 要求在项目的属性窗口中提供程序集名称以及默认命名空间 有一个AssemblyName属
  • 如何在SQLite中获取ROWID?

    考虑这个简单的表 tbl1 A first letter B second letter C third letter 第一列是letter第二列是desc 我可以毫无问题地执行此查询 select from tbl1 where lett
  • 从数组创建 mpf

    我正在尝试使用fsolve结合mpmath包裹 但是 我收到错误cannot create mpf from array mpf 1 0 dtype object 这是重现错误的最小示例 对于这个例子 技术上我不需要mpmath包 但我的实
  • 如何 rbind 与其列名称匹配的向量?

    rbind 在将向量绑定在一起时不检查列名 l list row1 c 10 20 row2 c 20 10 names l row1 c A B names l row2 c B A l row1 A B 10 20 row2 B A 2
  • 水豚与 :js => true 导致测试失败

    我对 Capybara 和 Rails 测试都很陌生 所以如果这是一个简单的答案 请原谅我 我有这个测试 it should be able to edit an assignment do visit dashboard path sel