jestjs 相关问题

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

未捕获类型错误:无法读取未定义的属性(读取“isBatchingLegacy”)

我正在尝试使用 jest 测试反应打字稿项目,但它给出了一个令人困惑的错误: 这是我的 package.json: “依赖项”:{ “@testing-library/jest-dom”:“^...

回答 4 投票 0

预计笑话错误:200,调用次数:0

我试图找出 comment.controller.js 文件测试失败的原因。但是,无法找到其原因。 [文件:comment.controller.js] const { getArticleData } = require('../services/article.

回答 1 投票 0

如何更改 Jest 中模拟导入的行为?

我在更改 Jest 中模拟模块的行为时遇到问题。我想模拟不同的行为来测试我的代码在这些不同情况下的行为方式。我不知道该怎么办...

回答 8 投票 0

无法在节点 v18.12.1 中使用 ESM 开玩笑地模拟模块

在带有 ESM 的 Nodejs v18.12.1 中使用 jest 模拟模块时遇到问题。 使用 jest 文档中给出的标准示例。 模块测试 //用户.js 从 'axios' 导入 axios; 类用户...

回答 1 投票 0

如何在 Vue 3 测试工具中测试转换函数?

我在使用 jest 和 vue test utlis 测试转换函数时遇到问题。这是我的组件代码: 我在使用 jest 和 vue test utlis 测试转换函数时遇到问题。这是我的组件代码: <div class="disclosure"> <button class="label" type="button" @click="toggle" > <span class="label-text"> <slot name="disclosure-title" /> </span> </button> <Transition name="disclosure" @before-enter="transitionBaseState" @enter="transitionEndState" @before-leave="transitionEndState" @leave="transitionBaseState" > <div v-show="open" class="panel" > <div class="panel-content"> <slot /> </div> </div> </Transition> </div> 我对转换函数有疑问:transitionBaseState 和transitionEndState。当我为组件运行 ejst spec 时,覆盖选项卡显示这些功能未被覆盖。您知道测试这些功能的最佳方法是什么吗?我对显示元素的测试是这样的: it('can be changed to opened by clicking the panel', async () => { await wrapper.find(buttonSelector).trigger('click'); expect(wrapper.find(panelSelector).isVisible()).toBe(true); }); 功能: function transitionBaseState(el: HTMLElement): void { el.style.height = '0'; } function transitionEndState(el: HTMLElement): void { el.style.height = `${el.scrollHeight}px`; } 好的。这是最难的。 Vue 测试 utils 默认存根转换。并且文档中没有涵盖这种行为。您需要通过硬编码的 false 值来全局模拟它。 import { config, mount } from '@vue/test-utils' ... // before Mount config.global.stubs = { transition: false } jest.useFakeTimers() // to deal with durations // mount // trigger click jest.advanceTimersByTime(duration + 1) // expect whatever you need from before-enter, enter, after-enter callbacks // trigger click jest.advanceTimersByTime(duration + 1) // expect whatever you need from before-leave, leave, after-leave callbacks 如您所见,我添加了使用假计时器的解决方法来处理过渡持续时间。 事实上,在大多数情况下,您不需要测试转换的作用。 vue 核心团队已经对此进行了测试,但也许在某些情况下应该对其进行测试。正如您所看到的,测试中的行数增加只是为了避免默认行为。它还使用未记录的模拟,您应该在每次更新 Vue/vue-test-utils 并进行一些重大更改后保持其正常工作。 无论如何,我已经测试了上面的代码。这是我的尝试 it('should call all the callbacks', async () => { expect.hasAssertions() const callbacks = { onBeforeEnter: jest.fn(), onEnter: jest.fn(), onAfterEnter: jest.fn(), onBeforeLeave: jest.fn(), onLeave: jest.fn(), onAfterLeave: jest.fn(), } const component = defineComponent({ name: 'Component', data() { return { flag: false } }, template: `<div> <transition @before-enter="onBeforeEnter" @enter="onEnter" @after-enter="onAfterEnter" @before-leave="onBeforeLeave" @leave="onLeave" @after-leave="onAfterLeave"> <span v-if="flag"></span> </transition> </div>`, methods: { onBeforeEnter: callbacks.onBeforeEnter, onEnter(e: Event, done: Function) { callbacks.onEnter() done() }, onAfterEnter() { callbacks.onAfterEnter() }, onBeforeLeave() { callbacks.onBeforeLeave() }, onLeave(e: Event, done: Function) { callbacks.onLeave(); done() }, onAfterLeave() { callbacks.onAfterLeave() } } }) config.global.stubs = { transition: false } jest.useFakeTimers() const wrapper = mount(component) await wrapper.setData({ flag: true }) expect(callbacks.onBeforeEnter).toHaveBeenCalled() expect(callbacks.onEnter).toHaveBeenCalled() expect(callbacks.onAfterEnter).toHaveBeenCalled() await wrapper.setData({ flag: false }) jest.advanceTimersByTime(1) expect(callbacks.onBeforeLeave).toHaveBeenCalled() expect(callbacks.onLeave).toHaveBeenCalled() expect(callbacks.onAfterLeave).toHaveBeenCalled() }) 这是我的解决方案: const FakeTranstion = defineComponent({ emits: ['afterEnter'], template: '<div><slot /></div>', setup(_, { emit }) { return { emitAfterEnter() { emit('afterEnter') }, } }, }) const subject = mount(YourComponent, { propsData: { modelValue, }, global: { stubs: { transition: FakeTranstion, }, }, }) subject.findComponent(FakeTranstion).vm.emitAfterEnter()

回答 2 投票 0

如何使用 Jest 模拟 React-Native Platform.OS?

Jest runner 使用“ios”作为默认操作系统(Plaform.OS)进行反应本机测试。 如何在具有平台相关代码的笑话中进行测试。更进一步,如何模拟在

回答 2 投票 0

如何在React测试库中全局设置waitFor选项?

我正在查看 waitFor 文档,我想知道是否有任何方法可以全局配置它,例如在 jest.config 或用于启动测试套件的命令中? 我...

回答 4 投票 0

如何使用测试库测试嵌套钩子值的useEffect

我有两个自定义挂钩: 我测试的 useInTestHook 钩子 useNestedHook 已测试并返回值 useInTestHook 钩子有逻辑: 导出 const useInTestHook = () => { 常量 [值,

回答 1 投票 0

未找到原生 ExponentConstants 模块,您确定 expo-constants 模块已正确链接吗?

当我运行我的博览会/玩笑项目时,我收到这些警告,我不知道为什么,在谷歌搜索时似乎没有出现。 控制台警告 “EXNativeModulesProxy”本机模块不是exp...

回答 4 投票 0

模拟使用react-redux的选择器和jest来使用react测试库进行测试

我正在尝试测试一个使用react-redux进行状态管理的组件。 为了快速测试,我想模拟 useSelector,如下所示: 常量模板 = [ { ID: ..., 姓名: ..., ... }, ...

回答 2 投票 0

React js 中 Sonarqube 覆盖率 0%

我开玩笑地写了一些单元测试。他们都成功了。能够查看jest生成的测试覆盖率报告 但我的 sonarqube 仪表板总是显示覆盖率 0%,但单元测试是......

回答 2 投票 0

使用基于 API 响应的 useState 钩子来测试条件渲染

我有这个 React 组件,它有一个基于 API 响应呈现的块。 const SomeComponent = () => { const [渲染,setRender] = useState(false) const handleClick = async () =>...

回答 1 投票 0

如何为作为 props 传递给“react-data-table-component”的函数编写测试用例?

从“react”导入React; 从“react-data-table-component”导入数据表 导出 const 组件 = () =>{ const openDetailPopup = (行: 行程) => { 路由器.push({ 爸...

回答 1 投票 0

如何检查 Jest 测试中是否调用了 useState 集(在 props 中传递)?

我有一个具有以下功能的React组件: const changeOrder => { 一个 websocket 请求 }; const handleArrow = async () => { const res =等待changeOrder(侧面,headingOrder,...

回答 1 投票 0

如何使用jest和sequelize-typescript对sequelize数据库调用进行单元测试

我在对在数据库模型中创建记录的函数进行单元测试时收到以下错误。 模型未初始化:无法调用成员“create”。 “用户模型”...

回答 1 投票 0

如何使用 React Jest 时间旅行到动画结束

我正在尝试测试一个在 TweenMax 动画后更改状态的组件。浏览器上一切都很好,但我无法理解如何为其编写测试。 问题是 Jest 不会等待...

回答 2 投票 0

Jest 建议使用“--detectOpenHandles”,它没有什么特别的作用

当我使用 jest --silent 运行测试时,我总是会打印此消息: 测试运行完成后,Jest 一秒钟都没有退出。 这通常意味着存在异步操作...

回答 1 投票 0

如何解决单元测试警告以拥有唯一的 key 属性

function OperatingHoursList(props: OperatingHoursProps): JSX.Element { const provOperatingHoursList: JSX.Element[] = []; if (props.operatingHours) { props.operatingHours.forEach( ({ 打开、关闭...

回答 1 投票 0

Jest 使用 SwiperJs 遇到意外标记

我正在用笑话创建一些快照测试。它给了我 SwiperJs 错误。 在我的测试中,我只想拥有渲染组件的快照。我还有一个单一的功能组件,它呈现一个

回答 2 投票 0

Jest beforeAll() 在多个测试文件之间共享

我有一个 Node.js 项目,正在使用 Jest 进行测试。我有几个具有相同设置要求的测试文件。以前,所有这些测试都在一个文件中,所以我只有一个 beforeAll(...) ...

回答 5 投票 0

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