首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

有没有办法在jest钩子中获得测试的文件名?

在Jest中,可以通过使用beforeEachafterEach钩子来在每个测试用例运行之前和之后执行一些操作。然而,Jest并没有直接提供一种方法来获取测试文件的文件名。不过,我们可以通过一些技巧来实现这个功能。

一种方法是使用global对象来存储测试文件的文件名,并在每个测试文件的顶部设置它。例如,在每个测试文件的顶部添加以下代码:

代码语言:txt
复制
global.__TEST_FILE__ = __filename;

然后,在beforeEachafterEach钩子中,你可以通过访问global.__TEST_FILE__来获取测试文件的文件名。例如:

代码语言:txt
复制
beforeEach(() => {
  console.log('Running test file:', global.__TEST_FILE__);
});

afterEach(() => {
  console.log('Finished test file:', global.__TEST_FILE__);
});

另一种方法是使用Jest提供的testEnvironmentOptions配置选项来自定义测试环境。你可以创建一个自定义的测试环境,在该环境中重写runTest方法来获取测试文件的文件名。以下是一个示例:

代码语言:txt
复制
// CustomTestEnvironment.js
const NodeEnvironment = require('jest-environment-node');

class CustomTestEnvironment extends NodeEnvironment {
  async runTest(test, config) {
    console.log('Running test file:', test.path);
    await super.runTest(test, config);
    console.log('Finished test file:', test.path);
  }
}

module.exports = CustomTestEnvironment;

然后,在Jest配置文件中,指定使用自定义的测试环境:

代码语言:txt
复制
// jest.config.js
module.exports = {
  testEnvironment: './CustomTestEnvironment.js',
};

这样,在每个测试文件运行之前和之后,都会打印出测试文件的文件名。

请注意,以上方法都是基于Jest的当前版本(v27)的实现。由于Jest的版本更新较快,未来的版本可能会有所变化。建议在使用时查阅Jest官方文档以获取最新的信息和方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【总结】超全面的前端工程化配置指南!

, // 跳过导入第三方 lib 声明文件类型检查,默认为 true "forceConsistentCasingInFileNames": true, // 强制文件名中使用一致大小写,....commitlintrc而不是默认.commitlintrc.js,详见 Eslint 章节 测试钩子是否生效,修改index.ts,让代码正确 const calc = (a: number,...,包括单元测试、集成测试等 build:构建系统或外部依赖项更改 ci:自动化流程配置或脚本修改 chore:非 src 和 test 修改,发布版本等 revert:恢复先前提交 Jest 美好生活从测试覆盖率...'ts-jest' 将测试命令添加到package.json。...Secrets 然后修改package.json“name”,“name”就是你NPM上创建package名称。

60340

手写一个简易版 Jest

Jest 是流行前端单元测试框架,可以用它来写 Node 代码或者组件单测。 Jest 用起来并不难,但很多人用了多年依然不知道它是怎么实现。...,可以全部单测、每个单测执行前后来执行一些逻辑: 综上,Matcher、Mock、钩子函数,这些就是 Jest 常用功能了。...jest 就是通过这种方式跑代码,注入了 jest、test、expect 等全局 api。 还有,为什么可以 mock 测试模块依赖模块,可以任意修改它内容呢?...那么问题来了,如何获得出错位置行列号呢? 答案很巧妙,就是通过错误堆栈: 用正则匹配出来就行。 jest 内部也是这么实现: 拿到错误 stack 顶层 frame,解析出文件名和行列号。...Jest 核心功能就是 Matcher(expect 函数),Mock(函数 mock 和模块 mock),再就是钩子函数。

14610
  • SpaceX原型机SN8测试爆炸,马斯克:获得所需要数据

    马斯克“火星梦”依然是困难重重。...作者 | 来自镁客星球家衡 当地时间周三,美国得克萨斯州博卡奇卡(Boca Chica)测试基地,美国太空探索技术公司SpaceX在这里进行星舰项目原型机SN8首次高空试飞,SN8成功升空6分钟半后...SN8是Starship(星舰项目)第一艘全尺寸原型机,也是第一艘用于高空测试原型机,由304L合金制成,高50米、直径9米、重达上百吨,使用猛禽发动机(Raptor engine)推力多达600多吨...据报道,SN8发射任务为测试任务,目标是飞到约12500米高空。测试时,研究人员会收集其翻转、定向数据等。此前马斯克曾两次公开表示SN8完成所有目标的几率仅三成。由此可见这次测试难度并不低。...从2019年Starship项目正式启动开发以来,SpaceX原型机测试就屡次失败,SN8之后,还有多款原型机将进行测试,这些试验将在3年内完成。 不得不说,马斯克“火星梦”依然是困难重重。

    38130

    那些年错过React组件单元测试(上)

    开源社区有超高人气,同时也获得了React官方推荐。 ? Jest 本篇文章我们着重来介绍一下Jest,也是我们整个React单元测试根基。 环境搭建 安装 安装Jest、Enzyme。...我们发现有以下几种模式: f: 只会测试之前没有通过测试用例 o: 只会测试关联并且改变文件(需要使用 git)(jest --watch 可以直接进入该模式) p: 测试文件名包含输入名称测试用例...t: 测试用例名称包含输入名称测试用例 a: 运行全部测试用例 测试过程,你可以切换适合模式。...通过第一个测试用例加 1,number值为 1,当第二个用例减 1 时候,结果应该是 0。但是这样两个用例间相互干扰不好,可以通过 Jest 钩子函数来解决。...我们测试也主要是用到了mock函数提供以下三种特性: 捕获函数调用情况 设置函数返回值 改变函数内部实现 下面,我将分别介绍这三种方法以及他们实际测试应用。

    5K20

    对 Vue-Router 进行单元测试

    如果你在用 Jest,其强大 mock 系统为此提供了一个优雅解决方法。可以简单 mock 掉子组件,本例也就是 。... router 实例上声明 组件内 guards,比如 beforeRouteEnter。组件声明 要确保这些运作正常,一般是集成测试工作,因为需要一个使用者从一个理由导航到另一个。...但也可以用单元测试检验导航 guards 调用函数是否正常工作,并更快获得潜在错误反馈。这里列出一些如何从导航 guards 解耦逻辑策略,以及为此编写单元测试。...通过将 beforeEach 导出为一个已结耦、普通 Javascript 函数,从而让其测试不成问题。...总结 本文讲述了: 测试由 Vue Router 条件渲染组件 用 jest.mock 和 localVue 去 mock Vue 组件 从 router 解耦全局导航 guard 并对其独立测试

    2.2K10

    前端自动化测试实践02—jest基本语法

    前端自动化测试实践02—jest基本语法 TOC Write By CS逍遥剑仙 我主页: www.csxiaoyao.com GitHub: github.com/csxiaoyaojianxian...1. matchers 匹配器 测试工具中最基本就是断言匹配器,下面是 jest 中常用匹配器。...,写在不同层级钩子函数,作用域不同 describe('测试分组和钩子函数', () => { let counter = null // 外层 beforeEach beforeEach...、UI等内容测试,快照保存上次运行结果存储 __snapshots__ 下,如果两次执行结果不一致则不通过,需要检查后更新快照,按 u 更新全部快照,按 i 进入交互式单独更新。...,node 不具备 dom,因此 jest node 环境下模拟了 dom api — jsDom import addDivToBody from '.

    1.8K75

    Vue Router 之单元测试

    如果你在用 Jest,其强大 mocking 系统为此提供了一个优雅解决方法。可以简单 mock 掉子组件,本例也就是 。... router 实例上声明。 组件内 guards,比如 beforeRouteEnter。组件声明。 要确保这些运作正常,一般是集成测试工作,因为需要一个使用者从一个路由导航到另一个。...不过,你也可以用单元测试检验导航 guards 调用函数是否正常工作,并更快获得潜在 bugs 反馈。这里列出一些如何从导航 guards 解耦逻辑策略,以及为此编写单元测试。...,我们借助 jest.mock,mock 掉了整个模块,并用 afterEach 钩子将其复原(译注:不要混淆这里 Jest afterEach 和导入 router beforeEach)。...通过将 beforeEach 导出为一个已解耦、普通 Javascript 函数,从而让其测试过程不成问题。

    2K10

    可能是目前最详细从零开始配置 TypeScript 项目的教程

    git hook 项目中哪些作用? git hook 客户端和服务端钩子各自用于什么作用? git hook 中常用钩子有哪些?...(类似的还包括 Style 样式格式等) 代码稳定性提交,提交之前确保测试用例全部通过 发送邮件通知 CI 集成(服务端钩子) Git Hook 钩子非常多,但是客户端可能常用钩子是以下两个:...(例如 ghooks[86] package.json 只需要进行简单钩子属性配置[87]),而在内部则通过替换 Git 钩子示例脚本形式使得外部配置钩子可以被执行,例如 husky[88]...这些配置信息(更多配置信息可查看 Jest CLI Options[108]): bail 配置作用相对类似于 ESLint max-warnings,设置为 true 则表明一旦发现单元测试用例错误则停止运行其余测试用例...温馨提示:Jest CLI Options findRelatedTests 可用于配合 pre-commit 钩子去运行最少量单元测试用例,可配合 lint-staged 实现类似于 ESLint

    4.9K22

    你可能已经忽略git commit规范

    引言 日常开发工作,我们通常使用 git 来管理代码,当我们对代码进行某项改动后,都可以通过 git commit 来对代码进行提交。...但是日常工作,大多数同学对于 log 信息都是简单写写,没有很好重视,这对于项目的管理和维护来说,无疑是不友好。...原理是可以实际 git commit 提交到远程仓库之前使用 git 钩子来验证信息。提交不符合规则信息将会被阻止提交到远程仓库。 先来看一下演示: ?...husky 是一个增强 git hook 工具。可以 git hook 各个阶段执行我们 package.json 配置好 npm script。...gitmoji就是可以实现这种功能插件,先让我们来感受一下 ? 有没有感觉很 cool~~ ?

    2.3K30

    【干货分享】微信小程序单元测试攻略

    $ npm i --save-dev jest 2.2.2 package.json,添加测试相关命令 {sd ......其实是mock时候,就将这个方法放在cache,当其他地方要import方法时,会先查看cache中有没有该方法,如果我们有mock了,他就使用mock方法了。...如果cache没有该方法,再使用正常方式import。...解决办法: tsconfig.ts添加: "skipLibCheck": true, 05.实验性测试 小程序真机测试 5.1 使用框架 miniprogram-automator 5.2 框架功能...腾讯WeTest为移动开发者提供兼容性测试、云真机、性能测试、安全防护等优秀研发工具,为百余行业提供解决方案,覆盖产品研发、运营各阶段测试需求,历经千款产品磨砺。

    2.7K40

    万字详文:彻底搞懂 Jest 单元测试框架

    Jest 作为 NPM 包发布,可以安装并运行在任何 JavaScript 项目中。Jest 是目前前端最流行测试库之一。 测试意味着什么 技术术语测试意味着检查我们代码是否满足某些期望。...,为了测试同一个文件夹创建一个测试文件,命名为 test.spec.js,这特殊后缀是 Jest 约定,用于查找所有的测试文件。...模拟 复杂测试场景,我们一定绕不开一个 Jest 术语:模拟(mock) Jest 文档,我们可以找到 Jest 对模拟有以下描述:”模拟函数通过抹去函数实际实现、捕获对函数调用,以及在这些调用传递参数...遍历执行测试函数后,非常简单,只需要位置放对就可以暴露任何时期钩子函数。...Jest 测试框架核心部分,以上部分基本实现了测试块、断言、匹配器、CLI配置、函数模拟、使用虚拟机及作用域和生命周期钩子函数等,我们可以在此基础上,丰富断言方法,匹配器和支持参数配置,当然实际 Jest

    7.8K20

    自动化测试 Jest 使用总结基础篇

    使用 jest 原因 随着前端发展,web交互越来越复杂,自动化测试是非常有必要融入到开发流程,而目前界内普遍通用且比较火就是有 facebook开发 Jest 这套工具。...他可以创建测试用例,执行测试,自身还有驱动和mock,且用起来也是很方便,正如 jest 官网这样描述 jestJest is a delightful JavaScript Testing Framework...但是我本地上测试时候,把这个东东给去掉之后,测试还是可以通过。 可能是某一些场景下。...钩子函数使用 钩子执行 再执行测试文件时候,如果有需要对函数进行特殊处理可以执行前和执行后使用钩子函数,beforeEach and afterEach。...那么,执行所有的 test 之后,也只是会执行一次 beforeAll and afterAll。 条件执行钩子 顾名思义,就是选什么情况下才触发钩子函数,按需使用。

    2.7K111

    从0到1,带你尝鲜Vue3.0

    歪歪一下中国球迷是不是就是光看不踢。 Vue3代码是基于Jest进行测试,我们先简单看看什么是jest Jest简介 Jest 是Facebook一个专门进行Javascript单元测试工具。...目录文件名约定 Jest测试代码和逻辑代码是遵从约定优于配置(convention over configuration)其实这个也是目前编程世界普遍接受原则。...Jest测试代码是基于以下约定 测试文件名要以spec结果 测试文件后缀为js,jsx,ts,tsx 测试文件需要放在tests/unit/目录下或者是/tests/目录下只要满足这三个要求测试文件...其实逻辑代码和测试代码对应放置还是很方便 我们再看看另外一个reactive这个包 ? 运行全量测试 package.json文件已经配置好了jest ? npm run test ?...响应式Reactive单元测试: ? 看一下每个包对应测试代码都放在__tests__文件件: npx jest reactive --coverage ?

    1.2K20

    web前端好帮手 - Jest单元测试工具

    而现在只需要运行npm install -D jest一键安装Jest,便可以快速接入单元测试编写。...钩子和作用域 测试时难免有些重复逻辑,比如我们测试读写文件时需要准备个临时文件,或者比如下面我们使用afterEach钩子每个测试完成后重置全局变量: global.platform = {};function...Jest钩子只对所在分组下测试生效,比如: // 文件全局作用域下,对该文件中所有测试用例生效afterEach(() => {...}); describe("group-A", () => {....toMatchSnapshot()默认按顺序来命名快照,实际测试过程,这样命名不可读,也让人很难推测出具体是哪句测试代码出问题,造成维护困难。...测试覆盖率统计 Jest自带测试覆盖率功能,jest.config.js配置文件开启即可: // jest.config.jsmodule.export = { // ...

    5K40

    WebStorm for Mac(JavaScript开发工具)中文版

    这意味着您现在可以获得更准确类型检查和类型信息,您将能够使用服务提供快速修复程序,并在TypeScript工具窗口中查看当前文件所有TypeScript错误。...React钩子提取方法该提取方法重构现在与当地功能和使用解构返回值,使得它非常适合提取自定义作出反应挂钩。...突出显示测试失败行当您使用Jest,Karma,Mocha或Protractor运行测试并且某些测试失败时,您现在可以在编辑器中看到问题发生位置。...IDE将使用堆栈跟踪信息并突出显示失败代码。悬停时,您将看到来自测试运行器错误消息,您可以立即开始调试测试。...键入后 node,IDE将建议文件夹和文件名。输入后npm run,您将看到当前文件定义任务列表。

    4.9K50

    【送红宝书】JavaScript 测试系列实战(四):掌握 React Hooks 测试技巧

    之前 useModalManagement 钩子测试代码,我们仅仅只测试了调用 Hook 时不会报错。...测试异步钩子 刚才 useModalManagement 涉及到都是同步操作,然而在实际应用,很多钩子都涉及到异步操作,例如 API 数据获取等。那么我们该怎么测试这些异步钩子呢?...提示 你也许还记得前面的课程,我们讲到了如何用 Jest Mock 去避免发起真正 HTTP 请求,从而能够保证测试不会因为网络问题而挂掉。...至于怎么用 Mock 来写,就留给作业给你吧~ 测试 Redux + Hooks 规模较大应用,我们通常会使用一个状态管理库来解决复杂数据流问题,而最受欢迎选择无疑是 Redux。...如果你熟悉 Redux 的话,你应该记得 react-redux 提供了 Provider 组件来向所有子组件提供 Store 对象,但是测试时候,我们该怎么让 Provider 去包裹待测试钩子

    2.1K00

    前端自动化测试探索和实践

    ❞ 众所周知原因,前端作为一种特殊 GUI 软件,做自动化测试困难重重。快速迭代,UI 变动大业务,自动化测试想要落地更是男上加男 ?。...单元测试(Unit Test) 单元测试是最容易实现:代码多个组件共用工具类库、多个组件共用子组件等。 「通常情况下,公共函数/组件中一定要有单元测试来保证代码能够正常工作。...UI 测试(UI Test) 我学习查阅文献过程,我发现国内不少文章都将 UI 测试(UI Test)和端到端测试(E2E Test)混为一谈,认为是同一个测试类型。...匹配器(Exception) 异步代码测试 ? 异步代码测试 ? 异步代码测试 ? 推荐方法 生命周期钩子 ? 生命周期钩子 「生命周期钩子执行顺序符合洋葱模型。」 执行顺序 ?...相信看完本篇为文章,你一定对前端自动化测试有了一定了解。 下一篇将会为大家带来自动化测试框架 Jest 与 React 配合,让大家真正能够 React 项目中落地,为生产提效!

    4.4K11

    【译】使用Enzyme和React Testing Library测试React Hooks

    确保代码没有bug一种方法就是编写测试用例。测试React hooks与测试一般程序方式没有太大区别。 本教程,我们将了解如何通过使用带有hooksto-do应用程序来实现这一点。...如果你第一次使用Enzyme,我们之前发布过关于它文章,《Enzyme如何在React应用Jest一起使用》。我们可以用他们来深入测试React Hooks。...我们使用断言,进一步模拟单击事件之前,输入“修复失败测试”,该事件应该将新项目添加到待办事项列表。 最后,断言列表中有三个项,并且第三个项与我们创建项相等。...因为我们只想删除一个项目,所以我们对集合第一个项目触发一个click事件,它应该删除第一个待办事项。这应该使待办事项子节点长度等于1。 这些测试也可以GitHub上找到。...根据官方文档,React取决于钩子调用关联状态和相应useState调用顺序。这段代码打乱了顺序,因为钩子只有条件为true时才会被调用。 这也适用于useEffect和其他钩子

    4.1K30

    【架构师(第二十九篇)】Vue-Test-Utils 触发事件和异步请求

    ---- 知识点 将 mock 对象断言为特定类型 使用 jest.Mocked 使用 it.only 来指定测试 case 使用 skip 跳过指定测试 case 测试内容 触发事件...trigger 方法 测试界面是否更新 特别注意 DOM 更新是个异步过程 使用 async await 更新表单 setValue 方法 验证事件是否发送 emitted 方法 测试异步请求 模拟第三方库实现...测试准备和结束 可以使用内置一些钩子来简化一些通用逻辑,以下钩子用于一次性完成测试准备。...case 运行之后执行,只执行一次 afterAll(() => {}); }); 以下钩子用于每个测试用例测试准备。...如果一个测试失败了,需要注意 它是否是唯一在运行用例,使用 only 单独运行一次 如果单独运行没问题,整体运行出错,应该检查 beforeEach ,beforeAll 等全局钩子逻辑是否有问题

    88210
    领券