javascript - jest.mock 不适用于 Javascript 测试和 Typescript 模块

标签 javascript typescript jestjs ts-jest

我模拟的 utilFunction 没有被使用,并且向工厂函数添加日志显示它从未被调用。我已经尝试搜索 jest.mock not working with relative paths 和 jest.mock not being called for Typescript 认为它可能与 JS 测试和 TS 源代码的混合或源代码中使用的不同模块路径有关对比测试代码。

正在测试的代码:

// src/foo/fooModule.ts
import { utilFunction } from '../util'

export const foo = () => {
  return utilFunction()
}

测试代码:

// test/fooModule.test.js
const { foo } = require('../src/foo/fooModule')

jest.mock('../src/util', () => {
  return { utilFunction: () => 'mocked' };
});

describe('fooModule tests', () => ...)

最佳答案

jest.mock 调用需要移动到导入上方:

// test/fooModule.test.js
jest.mock('../src/util', () => {
  return { utilFunction: () => 'mocked' };
});

const { foo } = require('../src/foo/fooModule')


describe('fooModule tests', () => ...)

在此之前,我最后一次使用 Jest 的经历是在一个项目中,该项目的测试也是用 Typescript 编写的,并且使用了 babel-jestbabel-jest 包括 babel-jest-hoist它会自动将 Jest 模拟提升到任何导入之上,所以我以前不必担心排序问题。

关于javascript - jest.mock 不适用于 Javascript 测试和 Typescript 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72663254/

相关文章:

javascript - 使用 JavaScript 删除特定的 <li> 元素

angular - Ionic Config Service(如何导入)

javascript - TypeScript 装饰器中的异步调用

javascript - jest-jasmine2 env.js 未处理的错误

reactjs - React、Jest 和 Material-UI : How to test for content rendered in a modal or popover

javascript - 区域设置 : Browser or OS Setting?

javascript - 我可以使用我的 jQuery AJAX post 方法数据键连接到我的 php 文件吗?

javascript - 我怎样才能通过一个 div 将点击传递到它下面的一个不相关的 div 并触发两个 div 的 onClick 监听器?

typescript - 可以使用函数类型强制执行 "no unknown properties"吗?

typescript - typescript 中的依赖类型 - 通过属性名称类型确定类型