Jest不能处理insertAdjacentElement吗?

2023-12-19

我想测试一个非常简单的JS函数

export function displaySpinner() {
    const loadingOverlayDOM = document.createElement('DIV');
    const spinner           = document.createElement('IMG');

    loadingOverlayDOM.id        = 'overlay-spinner';
    loadingOverlayDOM.className = 'content-overlay';
    spinner.className           = 'is-spinning';
    spinner.setAttribute('src', '/assets/img/svg/icons/spinner.svg');
l   loadingOverlayDOM.insertAdjacentElement('beforeend', spinner);
    document.body.insertAdjacentElement('beforeend', loadingOverlayDOM);
}

与这个(为了这个问题的目的而精简)Jest测试代码:

test('displaySpinner displays the spinner overlay in the current page', () => {
    utils.displaySpinner();
});

但测试运行对我大喊大叫:

FAIL  app/helper/utils.test.js
● utils › displaySpinner displays the spinner overlay in the current page

TypeError: loadingOverlayDOM.insertAdjacentElement is not a function

  at Object.displaySpinner (app/helper/utils.js:185:439)
  at Object.<anonymous> (app/helper/utils.test.js:87:15)
  at Promise.resolve.then.el (node_modules/p-map/index.js:42:16)
  at process._tickCallback (internal/process/next_tick.js:109:7)

这是 Jest 中的错误还是我在这里遗漏了一些东西?


我终于自己找到了答案:

玩笑用途jsdom尚不支持 DOM 功能插入相邻元素 (see GitHub 上的这个问题及其参考文献 https://github.com/tmpvar/jsdom/issues/1890)。所以我必须等到 jsdom 实现它或者在我的 JS 中使用其他方法。

您可以将 jsdom 的默认版本替换为最新版本(例如14 https://github.com/ianschmitz/jest-environment-jsdom-fourteen)通过安装相应的模块:

npm install --save-dev jest-environment-jsdom-fourteen

或使用纱线:

yarn add jest-environment-jsdom-fourteen --dev

然后用笑话testEnvironment配置参数:

{
  "testEnvironment": "jest-environment-jsdom-fourteen"
}

请注意,如果您使用以下命令启动 jest--env=jsdom参数,这将覆盖配置文件,因此您需要删除它。

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

Jest不能处理insertAdjacentElement吗? 的相关文章

随机推荐

  • Spinner 作为 MenuItem 未由 findViewById 初始化

    我的操作栏上有一个微调器 它是一个菜单项 不是导航模式 它在我从 spinnerNumber 调用方法的行返回一个 nullpointerException 我认为我对 xml 做了一些错误 或者也许我不应该在 OnCreateOption
  • 从 Julia 1.0 中特定目录中的文件导入模块和函数

    假设我有一个文件File jl有一个模块MyModule包含函数foo and bar在里面 在与模块文件相同的目录中 我有一个脚本Script jl 我想使用其中的函数MyModule在脚本中 人们会如何去做这件事呢 为了找到不在标准 L
  • 无法在 ROS 中使用本地安装的 Protocol Buffer

    我已经安装了协议缓冲区 https developers google com protocol buffers 本地 ROS包的目录结构如下 CMakeLists txt package xml include addressbook p
  • 进行更改后 ts-node-dev 不会重新启动

    这是我的文件 包 json scripts generate interfaces ts node src cli generate interfaces ts dist npm run generate interfaces rm rf
  • Google Play 服务示例:“connectionResult 无法解析”

    当我尝试按照有关如何检查 Google Play 服务是否已安装的示例进行操作时 我收到以下错误 servicesConnected 方法内的行中的 connectionResult 无法解析 int errorCode connectio
  • 片段replace()不替换所有片段

    如果我为具有相同 viewId 的片段 A 和 B 调用 add 然后尝试使用片段 C 在该 viewId 上调用 Replace 则只有片段 A 被删除 最终得到片段 B 和 C 根据文档 A 和 B 都应该替换为 C 或者我读错了文档
  • XC8 收到有关 plib I2C 函数的“未定义符号”错误

    嘿 StackOverflow 我的问题涉及下面粘贴的程序中报告的错误 目标设备是PIC12LF1552 它有一个串行外设 我认为它可以与 Microchip 的 XC8 编译器提供的库结合使用 互联网上的一些消息来源表示 只有 PIC18
  • 增强序列化和双打

    我正在尝试使用 boost 序列化库将类序列化为字符串 并且我的类中包含几个双成员变量 下面是我用来序列化的代码 include
  • Java中如何对泛型类型设置约束?

    我有一个通用类 public class ListObject
  • 如何在C++中获取外部IP地址?

    我将如何在 C 中查找用户的外部 IP 我需要一种适用于任何系统的方法 而不仅仅是我的系统 此外 系统可能位于路由器后面 因此 NAT 将发挥作用 从而使检索外部 IP 变得更加困难 理想情况下 我希望在不使用任何第三方服务 例如whats
  • 如何使用 zip cmd 工具将文件移至未压缩的 zip 中

    我试图确定如何使用zipcmd 行工具将文件 未压缩 移动到压缩文件的 zip 中 即我想要一个 zip 最后包含除一个压缩文件之外的所有文件 b c 该一个文件是另一个压缩文件 有人知道怎么做吗 看起来您可以使用 n 选项仅存储具有定义扩
  • 有没有办法确定 Linux PID 是否暂停?

    我有一个 python 脚本 它使用 SIGSTOP 和 SIGCONT 命令与 os kill 来暂停或恢复进程 有没有办法判断相关PID是处于暂停状态还是恢复状态 您可以从进程的 proc 目录 proc
  • 基于工作流(即有向图)浏览器的编辑器

    我想提供一个所见即所得的工具 最好是基于 JavaScript 的 用于工作流程图 即有向图 我需要商业软件友好许可 其中可能包括向 OEM 支付费用 如果有必要的服务器端部分 我需要 Java 或 ColdFusion 中的它 因为我正在
  • 如何从 Entity Framework 4.3 升级到 EF 5

    目前我们正在开发 EF 4 3 我们想将其升级到 EF5 我用谷歌搜索了升级过程步骤 但没有得到任何结果 请帮我 谢谢 以下是我在 EF4 3 到 EF5 上创建的内容的两个链接 文章 将现有项目迁移到 EF 5http msdn micr
  • Hibernate:在级联删除项目时清理集合的二级缓存

    我有一个问题 Hibernate 不会为级联删除的项目集合更新二级缓存 Details 假设我们有一个对象 Parent 其中包含 Child 对象的 Parent myChildren 集合 现在我们还有 Humans 对象和 Human
  • 计算我的位置与 Swift 上的 MapKit 图钉之间的距离

    我需要你的帮助 我正在开发一个应用程序 其中有一些图钉 位置 我想要的是获取每个图钉与我的位置之间的距离 我的代码如下 let annotation MKPointAnnotation let annotationTwo MKPointAn
  • 线程池 - 可能的线程执行顺序问题

    我一直在学习如何使用线程池 但我不确定池中的每个线程是否都正确执行 并且我怀疑有些线程被执行多次 我已将代码削减到最低限度 并一直使用 Debug WriteLine 来尝试弄清楚发生了什么 但这会产生一些奇怪的结果 我的代码如下 基于 不
  • 有人在没有ant的情况下使用webtest吗?

    我想尝试使用 WebTest 最好是来自 Clojure 但我只能找到它作为 Ant 任务公开的功能 似乎有某种 Groovy 接口 这意味着可以从 Ant 之外的任何 JVM 语言使用 但我无法弄清楚 我希望使用 WebTest 作为 可
  • 如何使用java更新Google App Engine中数据存储的字段值

    我在数据存储中创建了一个登录名 种类 在登录内部 我创建了两个字段用户名和密码 当用户更改密码时 我想更新数据存储内的字段值 但是当我使用这段代码时 DatastoreService datastore DatastoreServiceFa
  • Jest不能处理insertAdjacentElement吗?

    我想测试一个非常简单的JS函数 export function displaySpinner const loadingOverlayDOM document createElement DIV const spinner document