javascript - 如何 Jest 模拟命名导入?

标签 javascript reactjs testing jestjs

我曾经有过这样的设置:

export class MyClass {
}
export default new MyClass()

然后我会这样做:从'libraries/myclass'导入myclass

现在我把它改成:

export const myclass = new MyClass()

并像这样导入 import { myclass } from 'libraries/myclass' 这似乎在我的代码中有效

然而我所有的 Jest 测试都失败了

我目前在做:

jest.mock('libraries/myclass', () => ({
    myclassfunction: jest.fn(),
}))

我试过改成:

jest.mock('./myclass.js', () => (
  {
    ...(jest.requireActual('./myclass.js')),
    myclassfunc: () => {}
  }
))

但它仍然失败,当我 console.log(myclass) 它以未定义的形式通过时

最佳答案

你可以在你的测试中使用 jest automock 特性,你需要使用工厂来模拟它吗?

import { myclass } from 'libraries/myclass';
jest.mock('libraries/myclass'); 

// myclass is now a mock

关于javascript - 如何 Jest 模拟命名导入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58520536/

相关文章:

testing - 如何在@DataProvider 方法中检索@Test 方法参数?

javascript - Datetimepicker 不适用于附加表单 javascript 的元素

javascript - 使用 TypeScript 在 React 中使用 Promise 对象类型数据创建组件

javascript - 使用左右箭头向上滑动内容

javascript - 如何将 Prop 传递给事件处理程序

javascript - 在 Webpack 的 4 个概念中,模块指的是什么?

unit-testing - 如何对 NestJS 的自定义 CacheInterceptor 进行单元测试?

在黑莓设备上测试 - 多次添加和删除应用程序

javascript - startsWith 不是无缘无故被调用的函数

javascript - 我如何从js访问WebAssembly中的编译内存