jestjs 相关问题

Jest是一个由Facebook基于Jasmine制作的JavaScript单元测试框架,提供自动模拟创建和jsdom环境。它通常用于测试React组件。

为什么revalidateTag和revalidatePath在jest测试中不起作用?

我正在 Nextjs 中开发一个应用程序。我有一个创建新产品的服务器操作,并且我试图在创建后在服务器操作内重新验证缓存。 它在开发中有效,但...

回答 1 投票 0

将笑话与 Typescript、ESM 和别名一起使用

我使用 Typescipt 和 ESM 开发了一个模块(package.json 中的“type”:“module”)。 我还使用了一些路径别名,这是 tsconfig.json { “编译器选项”:{ ...

回答 2 投票 0

为什么我在清理测试期间会收到 TopologyClosed 错误?

我正在使用本地 Docker 镜像对 MongoDB 运行一些集成测试。我在 Jest 中有一些拆卸代码,以确保清理与 MongoDB 的所有连接: 导入 { 客户端 } ...

回答 1 投票 0

单元测试 jwt.helper.js 文件时预计出现 Jest 错误:{_id:1} 但收到:{_id: "undefined"}

我试图找出为什么 jwt.helper.js 文件测试失败。但是,无法找到其原因。 [文件:jwt.helper.js] const jwt = require('jsonwebtoken'); Exports.generateJwtToken = (userObj)...

回答 1 投票 0

还有哪些其他方法可以测试功能组件内的功能?

我有一个呈现表单组件的标头组件: 从“../lib/Context/WeatherContext”导入{ useWeatherContext }; 从“./HeaderForm”导入 HeaderForm; 常量标头...

回答 1 投票 0

jest.spyOn 似乎没有正确模拟默认导出函数

我似乎无法弄清楚为什么这个测试失败了;我已将问题减少到这两个文件.. [文件:esm-user.js] const getJack = () => {return 'Jack';}; const getJill = () => {return 'Jill';};...

回答 1 投票 0

VeeValidate4。如何测试使用useField的自定义字段组件?

我尝试测试我的自定义输入组件。但我不知道如何正确地做到这一点,因为我没有找到任何如何测试它的信息。 我唯一发现的是来自这个模拟表单和字段上下文 我的

回答 1 投票 0

如何在 Jest 中编写测试用例来处理两个 API 调用之间的 rxjs“延迟”

我有一个带有链式 api 调用的函数。我在两个 API 调用之间添加了 rxjs 延迟。 如何在 Jest 中编写测试用例来处理两个 API 调用之间的延迟。 API 的顺序 第一次 API 调用 之后

回答 1 投票 0

JSDOM 中的 MutationObserver 失败,因为参数 1 不是 Node 类型

我正在尝试使用 JSDOM 和 Jest 测试一个简单的 JavaScript 单页应用程序。 出于我们的目的,index.html 是一个简单的 html 文档,其中包含标签 我正在尝试使用 JSDOM 和 Jest 测试一个简单的 JavaScript 单页应用程序。 就我们的目的而言,index.html 是一个简单的 html 文档,其中包含标签 <div id="app-root"></div> 和 index.js,它通过 index.html 中的 <script> 标签加载,并在<div>看起来像这样:app-root。所以运行时我的最终 HTML 是:<div class="my-embed"></div> <div id="app-root"> <div class="my-embed"></div> </div> 始终存在,并且#app-root在执行.my-embed后存在。我尝试通过使用 <script> 加载 HTML 来测试这一点,然后验证是否添加了新的 runScripts: 'dangerously'。这是我的测试脚本: <div> 当我运行此程序时,它不断出错“TypeError:无法在“MutationObserver”上执行“observe”:参数 1 不是“Node”类型。”但据我所知,我传入的 import '@testing-library/jest-dom/extend-expect' import { JSDOM } from 'jsdom' import fs from 'fs' import path from 'path' const html = fs.readFileSync(path.resolve(__dirname, '../index.html'), 'utf8'); let dom let container function waitForElm(parentElm, selector) { console.log(parentElm); console.log(parentElm.outerHTML); console.log(selector); return new Promise(resolve => { if (parentElm.querySelector(selector)) { return resolve(parentElm.querySelector(selector)); } const observer = new MutationObserver(mutations => { if (parentElm.querySelector(selector)) { resolve(parentElm.querySelector(selector)); observer.disconnect(); } }); observer.observe(parentElm, { childList: true, subtree: true }); }); } describe('index.html', () => { beforeEach(() => { dom = new JSDOM(html, { runScripts: 'dangerously', resources: "usable" }) }) it('adds a tag', async () => { container = dom.window.document.body.querySelector("#app-root") const elm = await waitForElm(container, '.my-embed'); console.log(elm) expect(container.querySelector('.my-embed')).not.toBeNull() }); }) 是 一个 HTML 节点。 parentElm 我在这里缺少什么?为什么突变观察者不将 HTMLDivElement {} 视为节点传递? 我相信我遇到了同样的问题。隐式存在两个不同的 JSDOM 实例:一个是在每次测试时显式实例化的(即 $> npx jest console.log waiting at VirtualConsole.onMethodCall (node_modules/jsdom/lib/jsdom/virtual-console.js:22:29) console.log HTMLDivElement {} at log (src/__tests__/index.text.js:12:11) console.log <div id="app-root"></div> at log (src/__tests__/index.text.js:13:11) console.log .my-embed at log (src/__tests__/index.text.js:14:11) ),另一个是由 new JSDOM() 全局注入的。 调用jest-environment-jsdom时,使用了JSDOM的隐式全局实例。然而,传入的所有对象都是由本地实例生成的。这是 JSDOM 不允许的——请参阅关于此问题的讨论。因此,实际上,问题不在于参数不是 new MutationObserver(),而在于它是来自错误 DOM 的 Node。要解决此问题,请确保所使用的 Node 来自与 DOM 节点相同的 JSDOM 实例。这可以通过将 MutationObserver 替换为 new MutationObserver() 来实现。这样做的缺点是你现在必须传递 JSDOM(或者至少是它的 new dom.window.MutationObserver())。或者,您可以在任何地方使用全局实例并通过其他方法设置其 HTML(例如 window 或 document.write())。不过,其可行性将取决于确切的用例。

回答 1 投票 0

为什么会出现此错误:元素类型无效:需要一个字符串(对于内置组件)或一个类/函数(对于复合组件),但得到:未定义

我正在尝试为react/typescript组件编写一个笑话单元测试,但我不断收到错误 元素类型无效:需要一个字符串(对于内置组件)或一个类/函数(对于 com...

回答 1 投票 0

监视 redux 调度方法

我是一个笑话新手,我正在为我的 React 应用程序编写单元测试,该应用程序使用 redux 并使用 Typescript 编写。 我的容器组件包含这段代码: 合作...

回答 4 投票 0

不能在模块外部使用 import 语句 - jest + nextj.js

运行笑话测试我遇到以下问题: ` 语法错误:无法在模块外部使用 import 语句 30|欧洲证书: '/icons/certificate-european.svg', 31 |检查:'/图标/

回答 1 投票 0

如何使用 jest 在 React 中进行 Modal 的单元测试

//删除.jsx 从“react”导入 React,{useCallback,useRef} 从“react-redux”导入 {useDispatch} 从“../Modal”导入 {ModalComponent, modalOpen} 导出功能...

回答 1 投票 0

如何在 jest 中模拟特定于 it 块的 util 函数?每个 it 块都需要函数返回不同的值

尝试使用 jest 测试 React 组件。所以我有一个包含 3 个 it 块的描述块。考虑一下我正在嘲笑一个 util 函数 useIsCarCostly 为 true,但在第三个 it 块中我想要......

回答 1 投票 0

Jest 测试在 React/TypeScript 项目中返回“ReferenceError:tsx 未定义”

我正在尝试在 React 项目中编写 Jest 测试,其中一些 TypeScript 设置被强加给我。 在简约的 test.tsx (位于测试文件夹中)中,我有: 导入反应...

回答 1 投票 0

导出/导入类以测试其方法和构造函数

我一直不知道如何测试课程。 船舶.js 船级{ /** * 用于设置船舶对象的构造函数 * @param {Number} length 船的长度 * @param {Number} 命中...

回答 1 投票 0

测试整个表格用酶反应成分细胞

我正在尝试测试反应组件中的各个行和单元格,该组件的“返回”如下所示: 返回 ( ... 我正在尝试测试反应组件中的各个行和单元格,该组件的“返回”如下所示: return ( <div className="app-body"> <table className="grid"> <tbody> {grid.map((row, rowIdx) => { return <tr className="grid-row" key={rowIdx}> {row.map((node, nodeIdx) => { const { row, col } = node; return <Node key={nodeIdx} row={row} col={col}></Node> })} </tr> })} </tbody> </table> </div> ); 如何测试笑话/酶中的每个细胞? 我一直在努力: describe('test MyComponent', () => { const wrapper = render(<MyComponent />); const table = wrapper.find('table'); const row = render(<tr />) const node = render(<Node />); it('table grid', () => { expect(table).toHaveLength(1); expect(row).toHaveLength(1); expect(node).toHaveLength(1); }); }); 为什么它只期望一个节点? 如何收集表中的所有节点? 它期望为 1,因为只有 1 个 table 元素可供查找(对于 expect(table))。对于另外两个(row和node),您只是渲染单个元素(完全独立于您的MyComponent。如果您尝试计算MyComponent中的表、行和节点的数量,请尝试像这样的: describe('test MyComponent', () => { const wrapper = mount(<MyComponent />); const table = wrapper.find('table'); const row = table.find('tr') const node = table.find(Node) it('table grid', () => { expect(table).toHaveLength(1); expect(row).toHaveLength(whateverYouExpect); expect(node).toHaveLength(whateverYouExpect); }); });

回答 1 投票 0

Jest:如何合并来自不同笑话测试运行的覆盖率报告

有没有人设法将两个单独的玩笑测试运行的测试覆盖率报告结合起来? 我是新手,尝试使用默认的笑话报道记者:[“json”,“lcov”,“text&q ...

回答 5 投票 0

使用 Jest 的 canvas 元素的简单测试示例

我正在尝试为此沙箱中找到的示例创建一个笑话测试: https://codesandbox.io/s/r3f-basic-demo-forked-297k3?file=/src/App.js 基本上我想测试 onClick 功能...

回答 2 投票 0

Jest 的 setupFilesAfterEnv setupFile 不会被 VSCode IDE 读取,除非它实际打开了

我创建了一个最小的存储库来重现此问题。如果您有时间,请尝试一下:https://github.com/Danilvandervelden/jest-error-minimal-repro 除了 VSCod 之外,我还没有尝试过任何其他编辑器...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.