使用 RequireJS 依赖项测试 es6 模块时,Jest 中出现“定义未定义”

2024-01-07

我有一个 Jest 测试套件无法运行,因为它尝试测试的组件依赖于 RequireJS 模块。这是我看到的错误:

 FAIL  __tests__/components/MyComponent.test.js
  ● Test suite failed to run

    ReferenceError: define is not defined

      at Object.<anonymous> (node_modules/private-npm-module/utils.js:1:90)

该组件具有以下导入:

import utils from 'private-npm-module';

And the private-npm-module设置如下:

define('utils', [], function() {
  return {};
});

When MyComponent用babel转译并在浏览器中运行,依赖项运行正常。此问题仅影响单元测试。如何让我的测试套件在具有 RequireJS 依赖项的组件上运行?

我在用着babel-jest as my scriptPreprocessor在 package.json 的 jest 配置中。我正在使用 jest v0.15.1。


因此,Jest 不支持 RequireJS。在我的具体情况下,最简单、最合适的方法是在顶部嘲笑我的依赖MyComponent.test.js:

jest.mock('private-npm-module', () => {
  // mock implementation
})

import MyComponent from '../../components/MyComponent';

这样,当MyComponent加载后,它的依赖项已经被模拟,因此它不会尝试加载 RequireJS 模块。

如果您确实需要加载 RequireJS 模块进行测试,则可以使用jest's transform配置 https://jestjs.io/docs/en/configuration#transform-object-string-string将您的实现包装在 RequireJS 到 ES6 转换器中。

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

使用 RequireJS 依赖项测试 es6 模块时,Jest 中出现“定义未定义” 的相关文章

  • Jest - 模拟函数,从另一个文件导入

    测试的文件使用从另一个文件导入的函数 import myFunc from myFile 如何在该文件的测试中模拟该函数的返回值 我正在使用笑话 这对我有用 我不确定这是否是一个好的做法 import as myFile from myFi
  • 从输入类型编号获取无效值

    我正在使用输入类型数字 当它无效时 我如何从中获取值 例如 使用类型编号并仅打印 e 这本身是无效的 我正在使用 React 但我认为这个问题非常普遍 onChange event console log event target valu
  • 调用高阶组件时在 React 中访问类外部的 prop

    我正在尝试使用高阶组件 HOC 模式来重用一些连接到状态并使用 Redux Form formValueSelector 方法的代码 formValueSelector 需要一个引用表单名称的字符串 我想动态地设置它 并且每当我需要项目的值
  • Redux - 从函数调用操作

    我正在尝试从函数调用 redux 操作 我调用该函数的组件已连接到商店 但是 如果我通过以下操作 它就不起作用 function myFunc action action 有没有办法通过参数传递动作 谢谢 using bindActionC
  • 为什么我的反应路由器链接将我带到页面中间?

    我的网站上有很多链接 但只有一个可以执行此操作 它没有将我带到导航栏的顶部 而是转到内容的中间 知道为什么会这样吗 这是一个页面 其中有一个 map经历一些JSON 这是渲染div页面下方的文本元素 如果重要的话 这是一些可能相关的代码 路
  • 我点击的号码没有出现在反应项目的屏幕上

    当我尝试在屏幕中呈现点击的数字时 该数字没有出现 但它确实可以在控制台中显示 我不知道如何修复它应该在屏幕上 号码 旁边应用的号码 import render from testing library react import React
  • 将两个 JSON 数据合并为具有特定键值的一个

    我有两个 CSV 文件 球数据 json id 1 color red id 2 color blue 法庭 json court id 2001 ball in use 1 court id 2005 ball in use 2 如何根据
  • 如何使用 Webpack 缩小 ES6 代码?

    我正在使用 webpack 并想要部署我的网站 如果我缩小并捆绑 JavaScript 代码 则会出现以下错误 解析错误 意外标记 名称 Button 这是我未捆绑的代码 use strict export class Button lt
  • webpack中动态加载外部模块失败

    我正在尝试建立以下架构 一个核心 React 应用程序 它具有一些基本功能 并且能够在运行时加载其他 React 组件 这些额外的 React 组件可以按需加载 并且它们在构建核心应用程序时不可用 因此它们不能包含在核心应用程序的捆绑包中
  • 如何映射轮播的子项数组?

    我正在尝试将 Carousel 组件包装在映射对象数组周围作为组件的子级 目前我只能让映射创建映射对象的 1 个子对象 轮播需要像这样
  • 在 javascript 文件中设置 firebase-admin sdk

    我的最终目标是使用用户 ID 获取用户电子邮件 到目前为止 我发现我需要使用 firebase admin SDK 现在我有这个代码 var admin require firebase admin var serviceAccount r
  • 在 Node 中使用 Babel 导入与请求 [重复]

    这个问题在这里已经有答案了 我想在一个文件中导入一个类 use strict import models from model class Foo bar export default new Foo 当我使用导入时它有效 例如 impor
  • 在旧浏览器上使用 Fetch 的 ReactJS

    我正在使用 Webpack 和 Babel 实现 React JS 但是 我在让 Fetch 与 IE 11 配合使用时遇到问题 我的 babelrc 文件中有以下内容 presets env stage 0 react 以及我的 webp
  • 有没有办法在 React.render() 函数中渲染多个 React 组件?

    例如我可以这样做 import React from react import PanelA from panelA jsx import PanelB from panelB jsx React render
  • React 应用程序中的 addEventListener 不起作用

    一些背景 我正在尝试消费自定义网络组件在 React 应用程序中并尝试监听来自 Web 组件的事件 我相信您不能只在自定义 Web 组件上以通常的反应方式处理事件 i e
  • p5 向量减法“sub”返回错误

    我一直在尝试将 p5 草图上传到 React 构建中 使用react p5 wrapper 我能够成功在屏幕上渲染画布 但是 某些矢量函数会导致错误 var distance this position dist ball position
  • 可下载文件 - 盖茨比

    由于某种原因 尝试下载文件时失败 我尝试了几种不同的方法 但都失败了 我读过一些关于 pdf word 文件在盖茨比中被 禁止 的内容 默认 a href route to file a 好像不行 显示下载失败 任何帮助表示赞赏 See 将
  • 您在 javascript Web 应用程序中使用的第三方 API ApiKey 存储在哪里?

    如何以及在何处存储您在 javascript Web 应用程序中使用的第三方 API ApiKey 又名 AppId AppSecret AppKey 如果它用于获取 URL 并且在浏览器网络选项卡中可见 我是否应该对其保密 示例 在我的
  • TypeScript 编译速度极慢 > 12 秒

    只是把它放在那里看看其他人是否也遇到这个问题 我已经使用 webpack 作为我的构建工具 使用 typescript 构建了一个 Angular 2 应用程序 一切都运行良好 但是我注意到 typescript 编译超级超级慢 我现在只有
  • 使用 Flask/WTForms 和 React 进行 CSRF 保护

    有没有人成功地为使用 React 作为受控组件 提交到 Flask 后端 最好使用 WTForms 的表单实现了 CSRF 保护 我看过很多部分答案 其中一个是关于 Django 的 但找不到任何关于 Flask 的明确答案 我的大问题似乎

随机推荐

  • 使用 lldb 调用带有字符串参数的函数:如何?

    我无法使用 lldb 调用采用字符串参数的简单非模板化函数 有没有办法让 lldb 理解 C 数据类型 字符串 这是 C 程序中常用的数据类型 这里的示例源代码只是创建一个带有几个构造函数的简单类 然后调用它们 省略了 iostream 和
  • Java 中什么是可调用的?

    标题几乎概括了它 我想了解 callable 的概念和思想 我读过一篇在这里提问 https stackoverflow com questions 141284 the difference between the runnable an
  • 函数返回另一个函数的返回值

    如果我想打电话Bar 代替Foo does Bar 返回 Foo 返回的副本 额外开销 或者返回与Foo 临时堆栈上的位置 vector
  • 如何使用 Google Apps 脚本获取单元格的格式化值

    我想使用 Google Apps 脚本通过连接 Google 电子表格中所选单元格的值来创建字符串 问题是我不知道单元格是否包含数字 日期或文本 当值是数字或日期时 我想获取格式化值 即它在电子表格中显示的方式 例如 以下函数将返回命名范围
  • TabBarController didSelectViewController 不工作

    我知道这是一个非常重复的话题 但我无法让它发挥作用 主选项卡 h import
  • Django settings.py:单独的本地和全局配置

    我想知道是否可以将 Django 中的 本地 配置 静态的本地路径 必须是绝对的模板内容 本地数据库信息等 与 全局 配置 URL 中间件类 分开 安装的应用程序等 这样几个人就可以通过 Git 或 SVN 处理同一个项目 而不必在每次完成
  • FB.ui 和设置弹出窗口大小

    我正在使用 FB ui 并将显示参数设置为弹出 当方法为 stream publish 时 它会在加载内容时自动调整大小 但是 当使用 fbml dialog 为了显示多好友选择器 时 它显示的大小我无法更改 并且内容显示为裁剪的 我尝试过
  • 将 django-allauth 作为端点插入 django-rest-framework

    我在我的网站上使用 django allauth 进行社交登录 我还有一个由 django rest framework 提供支持的 REST API 用作移动应用程序的后端 有没有办法可以直接将 allauth 的身份验证后端插入 RES
  • js和template标签对比

    如何比较 profile id 和 JavaScript 变量profile id function compare profile id if profile id profilegroup subject id do something
  • 是否可以用 C# 创建有状态的 Web 服务?

    我现在有这样的东西 public class Service1 System Web Services WebService WebMethod public string Method1 SomeObj so SomeClass GetS
  • 不可预测的双重[重复]

    这个问题在这里已经有答案了 可能的重复 NET 上的双精度问题 https stackoverflow com questions 566958 double precision problems on net 双重计算产生奇数结果 htt
  • 检查 ruby​​ 中的两个范围是否重叠

    我知道我能做到 1 30 cover 2 gt true 但是当我尝试对另一个范围执行相同操作时 它总是返回 false 1 30 cover 2 3 gt false 所以我的问题是 有没有什么优雅的方法来比较红宝石中的两个范围 就我而言
  • 杜瓦尔算法如何处理奇数长度的字符串?

    寻找按字典顺序最小化字符串旋转 https en wikipedia org wiki Lexicographically minimal string rotation是一个众所周知的问题 对于这个问题线性时间算法 https www s
  • 如何模拟 WellKnownSidType?

    我知道我可以使用以下方法模拟 Windows 帐户 http msdn microsoft com en us library chf6fbt4 aspx http msdn microsoft com en us library chf6
  • Rails i18n 和 JavaScript 中的路线

    有时 使用 JavaScript 提供 Rails 本地化文件会非常方便 对于路线助手来说也是如此 我发现这两个插件正是这样做的 将 i18n 暴露给 JavaScript http github com fnando i18n js ht
  • Activity 转换黑屏

    所以我有 WelcomeActivity gt HomeActivity 并关闭 WelcomeActivityfinish supportFinishAfterTransition 我想做 SlideTransition 或 fadeTr
  • 导入错误:没有名为串行的模块

    我有一个用 Python 3 编写的脚本 安装了 3 3 5 每当我尝试运行它时 我都会从终端收到此错误 我使用的是 Mac OSX 10 7 5 我已经安装了pyserial 使用 pip 用于 python 3 为了做到这一点 我首先使
  • 如何像 Wysiwyg 中那样在 Quill 中添加“显示 html”按钮?

    我最近发现了 Quill 文本编辑器 因为我正在使用 php 和 javascript 中的新东西 所以我决定在我的应用程序中使用它而不是 Wysiwyg Quill 文档确实非常简约 如何添加允许用户显示和编辑当前 html 的按钮 我是
  • SecurityException,无法显式添加类型为 myPakcageName 的帐户

    当更新现有应用程序时 Firebase 会报告以下致命异常 Exception java lang SecurityException uid 10123 cannot explicitly add accounts of type com
  • 使用 RequireJS 依赖项测试 es6 模块时,Jest 中出现“定义未定义”

    我有一个 Jest 测试套件无法运行 因为它尝试测试的组件依赖于 RequireJS 模块 这是我看到的错误 FAIL tests components MyComponent test js Test suite failed to ru