为什么访问我的根路径需要预热时间才能使我的测试数据可用?

2024-01-04

我正在从 capybara-webkit 切换到 poltergeist/phantomjs。我遇到了计时问题,并且已确定哪一行代码需要预热时间,但我无法确定这是为什么或如何解决它。

我有一个 225 行规范文件,其中包含几十个测试。在任何给定的测试运行中,其中 1 或 2 个将始终失败。可以是其中任何一个,但不一致。

这个 before 块适用于所有测试。我已经注释了代码来解释情况。

before do
  # --> Create several objects using factory girl
  # --> stub some methods 

  visit root_path
  # sleep 0.5 here always fixes the problem. sleeping before this line does not.

  find("a#sign-in-link").click
  within "form#new_session" do
    fill_in 'user[email]', with: user.email
    fill_in 'user[password]', with: user.password
  end
  click_button "Sign in"

  # On the specs which fail, this is the line which fails.
  # Capybara::ElementNotFound: Unable to find link "People"
  click_link "People"
end

click_button "Sign in"结果导致页面加载。因此,人们可能会认为问题与该页面没有时间加载有关。save_screenshot or save_and_open_page登录后立即显示身份验证实际上未成功(与失败消息一致)。

这表明问题是因为在某些情况下测试数据没有时间加载。然而,为什么会sleep必须来after visit root_path?即使我的测试数据的某些方面需要通过访问页面来“预热”(据我想象,情况并非如此),我的根路径中没有任何内容可以加载此数据。提交登录表单时更有可能发生这种情况。

可能是什么原因造成的?

更多信息

Using this https://gist.github.com/jjb/b04a7385cc058a18d1a3我尝试输入的代码wait_for_ajax_completion after visit root_path,还是失败了。

然后一时兴起,我尝试把它放在前面click_button "Sign in"-- 这会持续增加失败次数(但数量不会一致,它仍然随每次运行而变化)。


None

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

为什么访问我的根路径需要预热时间才能使我的测试数据可用? 的相关文章

随机推荐

  • jQuery 中的 class 和 id 有什么区别?

    jQuery 中的 class 和 id 有什么区别 例如 span class lalal span and span span 因为一个可以很好地使用 jQuery 而另一个则不能 谢谢 ID 在页面上应该是唯一的 当您有多个具有相同
  • 选择 Mysql 触发器内变量的值

    好吧 我见过很多类似的问题 但爬过答案并不能让我的触发错误消失 我需要的结果是 每当在数据库表中插入新值时temp pool 如果新地址不等于具有相同地址值的先前地址值 则会触发dev id正如这个NEW dev id将新值插入位置表 这是
  • Asp.net Mvc:为什么浏览器寻找 favicon.ico

    我知道有一个解决方案可以停止 mvc 框架处理 favicon ico 请求 solution https stackoverflow com questions 4624190 mvc does the favicon ico also
  • WPF组合框奇怪的问题

    我将 SortedListbox 绑定到 WPF 组合框 一切都很好 当我选择第一个 仅第一个 项目时 问题发生了 问题是 在选择第一个项目后选择新项目时 SelectedValue 不会更改 假设组合中第一项的 SelectedValue
  • 访问 PCI 配置空间中寄存器的正确方法

    当您需要访问 PCI 配置空间中的寄存器时 是否只需使用内置 BIOS 函数将 DWORD 读 写到配置空间中 例如 如果我尝试使用位于 B0 D31 F1 上的 IDE 控制器 我是否可以使用该 BDF 作为 BIOS 功能的参数来继续读
  • DNN 重定向循环

    我正在尝试通过创建数据库副本并将 net 文件复制到新文件夹中来复制用于测试目的的现有 DNN 门户 在复制站点并更改 Web 配置以指向新站点并更改数据库中的别名后 我收到此错误 此网页有重定向循环 网页位于http xxx us xxx
  • zend框架中的动态自定义ACL?

    我需要一个解决方案 允许经过身份验证的用户访问某些控制器 操作 而不是根据其用户类型 即 管理员或普通用户 尽管我稍后可能会使用标准 ACL 添加此内容 但要根据其用户的当前状态 例如 他们成为该网站的会员已经超过 1 周了吗 他们完整填写
  • 如何在recyclerview中显示加载消息

    我有一个 recyclerview 我想在回收器填充来自 json 的数据时显示 正在加载 消息或旋转圆圈 这是我的回收商的代码 arrayList new ArrayList lt gt adapter new ListAdapterGr
  • Palm Pre 框架

    我有一定的网络开发经验 不是我的主要技能 但我的基础知识相当不错 我非常缺乏的是现代 JS 框架 Prototype jQuery YUI 等 的知识和经验 我想和他们一起玩 最终都会有 但需要从一个开始 问题是这样的 我是very最终有兴
  • C++11 非静态成员初始值设定项和删除的复制构造函数

    我正在尝试使用 GCC 4 7 2 MinGW 编译以下简单代码 这里我使用 C 11 功能 非静态成员初始值设定项 include
  • 有什么办法可以有异步消息框吗?

    或者我必须使用线程 C 不 没有 或者 您可以创建 非模式对话框
  • 使用模型名称和外键模型的区别

    In the Django 文档 https docs djangoproject com en dev ref models fields foreignkey条目为ForeignKey 它说 如果需要在尚未定义的模型上创建关系 可以使用
  • PuTTY plink发送control+C

    我正在使用 Putty plink 命令行实用程序在 UNIX 服务器上运行一些脚本 我使用 m 选项 plink ssh pw xxx myserver m file txt 文件 file txt 包含要执行的命令列表 并且是使用某些应
  • Twitter API 仅应用程序模式身份验证

    我尝试集成 STTwitter 框架 Github 项目 以与 Twitter API 1 1 进行交互 在我的开发帐户中创建应用程序后 我使用 OAuth 凭据进行仅应用程序模式身份验证 无论如何 我收到以下错误 但我不知道如何修复它 错
  • 这是在存储过程中使用 UNION ALL 的正确方法吗?

    这是正确的方法吗UNION ALL在存储过程中 ALTER PROCEDURE GetHomePageObjectPageWise PageIndex INT 1 PageSize INT 10 PageCount INT OUTPUT w
  • 为云函数指定区域时出现异常“firebase.functions() gets ... no argument ...”

    我正在关注 Firebase文档 https firebase google com docs functions locations http and client callable functions为了从网页调用位于不同区域的可调用函
  • 如何在 gradle kotlin-dsl 中覆盖任务

    在 Groovy 中 我重写了这样的任务 task jar overwrite true 如何使用 Kotlin dsl 做到这一点 我知道我可以创建这样的任务 tasks val jar by creating 但我找不到将其声明为覆盖的
  • 如何从 JSON 中删除不需要的字符串属性

    假设我的输入遵循 JSON obj x y test str myStr Hi 我想删除所有空字符串和值为N A使输出变为 obj y test str myStr Hi 请注意 上面的输入只是一个示例输入文件 我尝试写一些代码 var s
  • libcurl -curl_easy_perform() 失败:SSL CA 证书有问题(路径?访问权限?)

    我在 Windows 7 x64 上使用 mingw64 MSYS2 从下面的链接编译了简单的 libcurl 示例程序 https curl se libcurl c simple html https curl se libcurl c
  • 为什么访问我的根路径需要预热时间才能使我的测试数据可用?

    我正在从 capybara webkit 切换到 poltergeist phantomjs 我遇到了计时问题 并且已确定哪一行代码需要预热时间 但我无法确定这是为什么或如何解决它 我有一个 225 行规范文件 其中包含几十个测试 在任何给