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

Jest忽略根目录中的__mocks__目录

Jest 是一个流行的 JavaScript 测试框架,它允许开发者编写单元测试、集成测试和端到端测试。__mocks__ 目录是 Jest 中的一个特殊目录,用于存放模拟(mock)文件。当 Jest 运行测试时,它会自动查找这个目录下的文件,并在需要时使用它们来模拟模块。

如果你希望 Jest 忽略根目录中的 __mocks__ 目录,可以通过配置 Jest 的 moduleNameMapper 或者调整文件结构来实现。

基础概念

  • Jest: JavaScript 测试框架。
  • mocks: Jest 中用于存放模拟文件的目录。
  • moduleNameMapper: Jest 配置项,用于重写模块路径。

相关优势

  • 模块模拟: 允许开发者模拟外部依赖,使得测试更加独立和可控。
  • 提高测试速度: 使用模拟可以避免执行实际的 I/O 操作,从而加快测试速度。

类型与应用场景

  • 文件模拟: 当测试中需要使用某个模块,但不想执行其实际功能时,可以使用文件模拟。
  • 函数模拟: 对于函数库或 API 的调用,可以通过模拟返回特定值来控制测试流程。

遇到的问题及原因

如果你不希望 Jest 使用 __mocks__ 目录下的模拟文件,可能是因为:

  • 误用模拟: 开发者可能无意中使用了模拟文件,导致测试结果不准确。
  • 目录结构问题: __mocks__ 目录可能被错误地放置在了不应该存在的位置。

解决方法

方法一:调整 moduleNameMapper

在 Jest 的配置文件(通常是 jest.config.jspackage.json 中的 jest 字段)中,你可以使用 moduleNameMapper 来排除特定的目录。

代码语言:txt
复制
// jest.config.js
module.exports = {
  moduleNameMapper: {
    '^__mocks__$': '<rootDir>/__mocks__/ignored',
  },
};

这样配置后,Jest 在查找模块时会忽略根目录下的 __mocks__ 目录。

方法二:重命名或移动目录

另一种简单的方法是将 __mocks__ 目录重命名或移动到其他位置,这样 Jest 就不会自动识别它了。

例如,你可以将其重命名为 mocks_disabled 或者移动到 test 目录下。

示例代码

假设你有一个项目结构如下:

代码语言:txt
复制
/project-root
  /src
  /__mocks__
  /test
  package.json

你可以通过修改 jest.config.js 来忽略根目录下的 __mocks__

代码语言:txt
复制
// jest.config.js
module.exports = {
  moduleNameMapper: {
    '^__mocks__$': '<rootDir>/__mocks__/ignored',
  },
};

或者,你可以将 __mocks__ 目录移动到 test 目录下:

代码语言:txt
复制
/project-root
  /src
  /test/__mocks__
  /test
  package.json

这样,Jest 就不会在根目录下查找 __mocks__ 目录了。

通过上述方法,你可以有效地控制 Jest 对模拟文件的使用,确保测试的准确性和可靠性。

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

相关·内容

  • Jest基本使用方法以及mock技巧介绍

    句法来验证不同的内容; 测试异步代码:支持承诺(promise)数据类型和异步等待async / await功能; 模拟函数:可以修改或监查某个函数的行为; 手动模拟:测试代码时可以忽略模块的依存关系;...2.2.3  在需要mock的模块目录临近建立目录__mocks__  这里面分两种情况: 2.2.3.1  对于用户目录下面的模块 例如我们需要mock目录models下面的user模块,那么我们就需要在...models下面新建__mocks__目录(这里要区分大小写),然后新建文件user.js。...注意:用这种方式, 需要在单元测试文件中需添加下面的代码才能使此mock生效。 ?...2.2.3.2  对于node_modules下面的模块 如果我们需要mock的模块是一个Node的模块(如lodash ),那么 __mocks__应该是挨着node_modules目录(除非你手动配置的

    8.6K50

    2022年3月最新Eslint + Prettier + Husky + Stylelint + Jest + CICD 超详细前端单元测试&规范工程化工作流

    pnpm init @eslint/config 基于上边的步骤,我们生成了基础配置; 由于我的示例项目使用Next.js框架构建,需要在extends中额外配置"next"。...pnpm i prettier --save-dev 我们需要在根目录配置.prettierrc; 这是我配置的规范,以下指令可以快捷生成 echo \{\"semi\": true,\"tabWidth...i lint-staged --save-dev npx husky add .husky/pre-commit "npx lint-staged" 同时在根目录下创建.lintstagedrc,这是我的配置...同时在根目录新建.commitlintrc.js module.exports = {extends: ["@commitlint/config-conventional"]}; 2.2.3 commit...'], } module.exports = createJestConfig(customJestConfig) 接着在根目录创建jest.setup.js,内容可以暂时为空 编写第一个React

    1.9K10

    git中怎样忽略.idea文件和目录

    untracked -这些是在工作目录中创建的任何新文件或目录,但还没有暂存(或使用git add命令添加)。 ignored -这些是Git在Git存储库中完全排除、忽略和不知道的所有文件或目录。...通常,.gitignore文件被放置在存储库的根目录中。根目录也称为父目录和当前工作目录。根文件夹包含组成项目的所有文件和其他文件夹。也就是说,您可以将它放在存储库中的任何文件夹中。...它们提供关于操作系统的使用活动和错误的信息,以及操作系统中发生的事件的历史记录。 如果您只想忽略一个特定的文件,则需要提供从项目根目录到该文件的完整路径。...如何忽略git里的文件和文件夹 例如,如果你想忽略根目录下的一个text.txt文件,你可以这样做: /text.txt 如果您想忽略位于根目录下test目录中的text.txt文件,您可以执行以下操作...要忽略一个完整的目录及其所有内容,你需要在目录名的最后加上斜杠/: test/ 该命令将忽略位于项目中任何位置的名为test的目录(包括该目录中的其他文件和其他子目录)。

    40010

    Linux根目录下各个目录的用途及含义

    Linux根目录下各个目录的用途及含义 Linux ./bin 重要的二进制 (binary) 应用程序,包含二进制文件,系统的所有用户使用的命令都在这个目录下。 ..../home 本地用户主 (home) 目录所有用户用home目录来存储他们的个人档案 ./lib系统库 (libraries)文件包含支持位于/bin和/sbin下的二进制文件的库文件。 ..../lost+found 在根 (/) 目录下提供一个遗失+查找(lost+found) 系统.必须在root用户下才可以查看当前目录下的内容。 ..../opt 提供一个供可选的(optional)应用程序安装目录包含从各个厂商的附加应用程序,附加的应用程序应该安装在/opt或者/opt的子目录下 ....在这个目录下可以找到内容可能增长的文件

    3K10

    如何使用.gitignore忽略Git中的文件和目录

    在本教程中,我们将说明如何使用.gitignore忽略Git中的文件和目录。包括常见匹配模式*星号,斜杠/,#井号注释,?...斜杠符 斜杠符号(/)是目录的分隔符。斜杠开头模式相对于.gitignore所在的目录。如果模式以斜杠开头,则仅从仓库的根目录中开始匹配文件和目录。...如果模式不是以斜杠开头,则它将匹配任何目录或子目录中的文件和目录。 如果模式以斜杠结尾,则仅匹配目录。当目录被忽略时,其所有文件和子目录也将被忽略。 文件名 最直接的模式是没有任何特殊字符的文件名。...文件通常放置在仓库库的根目录中。...但是,你可以在仓库的不同子目录中创建多个.gitignore文件。.gitignore文件中的模式相对于文件所在目录匹配。 在子目录中的文件中定义的模式优先于高于根目录中的模式。

    9.2K10

    dede系统 修改原始的data目录至根目录的方法

    织梦dedecms系统默认的网站地图生成系统是将sitemap文件生成到 “data” 目录下,但是dede的robots.txt中又禁止了“data”目录的抓取,所以通常情况下,搜索引擎可能无法正常专区网站地图...所以我们需要将dede的网站地图生成到其他目录,本文就以将dede原始的网站地图文件修改到根目录。...1,登陆FTP,在网站根目录下建立rss文件夹2,修改根目录下你的管理员文件夹(默认是一般是dede,如果您修改过目录名称,请按照你修改过的目录查找)下的makehtml_map.php文件将17行的$...$row->id.”.xml”;5,修改/templets/default模板文件head.htm将模板中的“网站地图”、“RSS订阅”的链接修改为根目录下,去掉网站地图文件名前的程序目录语句6,进入后台...注意:修改玩地图后,请务必记得将网站页面中网站地图的路径修改为新的路径,包括robots.txt中的地图路径也要重新修改。

    1.2K20

    C#获取根目录的方法集合

    获取基目录,它由程序集冲突解决程序用来探测程序集  2、取得Web应用程序的根目录方法      方法1、HttpRuntime.AppDomainAppPath.ToString();//获取承载在当前应用程序域中的应用程序的应用程序目录的物理驱动器路径...用于App_Data中获取      方法2、Server.MapPath("") 或者Server.MapPath("~/");//返回与Web服务器上的指定的虚拟路径相对的物理文件路径      方法...3、Request.ApplicationPath;//获取服务器上ASP.NET应用程序的虚拟应用程序根目录  3、取得WinForm应用程序的根目录方法      1、Environment.CurrentDirectory.ToString...1、Server.MapPath("/") 注:获得应用程序根目录所在的位置,如 C:\Inetpub\wwwroot\。...4、Server.MapPath("~/") 注:获得当前应用级程序的目录,如果是根目录,就是根目录,如果是虚拟目录,就是虚拟目录所在的位置,如C:\Inetpub\wwwroot\Example\。

    1.8K30

    React单元测试:Jest + Enzyme(二)

    前言 在上一篇教程中,我们成功搭建了基于Jest和Enzyme的单元测试框架并成功地跑起来第一个单元测试,可以点击这里回顾一下。今天,我们重点讨论如何通过Jest来mock数据。...什么是Mock Mock的简单翻译就是模拟。既可以模拟数据,也可以模拟行为。在上一篇文章中,就用到了mock功能来忽略对多媒体文件和字体文件等的请求: "jest": { ......_/__mocks__/fileMock.js", ... } } 当遇到.jpg等文件时,就会执行fileMock.js的代码,简单的返回一个字符串: module.exports...data: 'This is the data you request2' }, ])) ) } 次文件存放在单测root目录下的...这里,我们使用了enzyme的mout方法来渲染组件,这个方法会执行组件对应的生命周期方法。在上面的例子中,componentDidMount方法里就包含了请求api的方法。

    1.5K20

    Linux 系统根目录下的文件夹

    Linux 系统根目录下的文件夹 本文介绍 Linux 系统根目录下的各种文件夹及其用途,了解这些目录可以帮助你更好地管理你的 Linux 主机。...---- Linux 系统根目录 各个不同 Linux 发行版的根目录会有一些区别,但大多数发行版的主要的目录都是有的。.../mnt mount 系统提供此文件夹用于给用户挂载其他的文件系统,例如光驱 /opt 用于安装软件的目录 /proc 是一个虚拟目录,是系统的内存映射,可通过访问此目录获取系统信息(这个目录的内容不在硬盘上而在内存里.../sys 存放 Linux 系统内核文件 /tmp 用于存放一些临时文件 /usr 用户的应用程序和文件都在此目录下,类似于 Windows 系统中的 Program Files 目录 /var 经常被修改的文件可以放到这个目录...---- 参考资料 Linux 系统目录结构 - 菜鸟教程 Linux中etc目录详解大全总汇详解_mianjunan的博客-CSDN博客 本文会经常更新,请阅读原文: https:

    8.1K20

    新旧COS访问根目录的不同情况

    老旧的COS桶acl是包含了getbucket的权限,会导致一个情况:就是设置公有读私有写的时候,所有人访问cos桶跟目录会显示出所有的文件目录结构 例如这个样子 image.png 但是新建的桶是默认拒绝...getbucket的权限,所有当新建COS桶的时候设置成公有读私有写时,所有人访问时就会出现这样的情况 image.png 这样的情况是符合期望的。...那么如何让旧的COS桶和新建的COS桶呈现出一样的效果呢,有两个方法 1、把桶先改成私有读然后再改成公有读私有写 (当cos桶有业务的时候不能进行修改) 2、 加一条拒绝GetBucket接口的policy...策略 (授权资源选择全部资源) image.png 这样就可以让旧的COS桶在设置成公有读私有写的时候,跟新建的COS呈现出一样的效果了

    79710

    docker - 占满根目录空间的解决方案

    Docker 默认会占用根目录的空间,时间久了就会吧根目录占满,本文记录解决方案。 问题复现 不知不觉根目录已经没有空间,ls 的补全都会报错。...sudo apt-get clean # 若你想清理出更多的空间,可以把电脑上存储的安装包全部卸载 sudo apt-get autoremove # 删除已经被卸载的软件所依赖的...(其他软件不依赖的)孤立的软件包 方案2 空间仍不足:通过建立软链接将/var目录下占用空间较大的目录移动到富足的空间区块(如/home)下,使得/var下不再占用空间。...(具体实现) 查看文件夹下文件占用磁盘空间 sudo du -ah -x --max-depth=1 通过排查发现/var/lib/docker中文件巨大,将其移到其他磁盘中 为了避免风险并提升速度...(小文件很多),将其压缩到其他盘中再解压 tar -zcvf [压缩后的文件.tar.gz] var/lib/docker 解压: tar -zxvf [压缩后的文件.tar.gz] 将/var/lib

    1.5K30

    Linux下调整根目录的空间大小

    Linux下调整根目录的空间大小 版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。...本文链接:https://blog.csdn.net/sunshine920103/article/details/54138345 一、目的 在使用Linux系统的时候,发现根目录(/)的空间不是很充足...,而其他目录空间有很大的空闲,所以本文主要是针对现在已有的空间进行调整。...卸载vg_centos-lv_home分区 [plain] view plain copy [root@CentOS-78 /]# umount /home   此时在用df命令查看将会发现/home目录已经看不见了...三、所遇到的问题 1、在卸载/home目录的时候失败 可先执行如下fuser命令,然后再umount即可: [plain] view plain copy [root@CentOS-78 /]# fuser

    8.2K73

    CentOS系统将 home目录合并到 根目录的图文教程

    我记得在最新安装麒麟Linux服务器的时候需要先格式化硬盘,然后挂载到根目录,但是由于麒麟linux服务器没有部分的镜像源,所以我将其更换了Centos7系统,隐隐约约记得也做了格式化和分区,最近发现磁盘空间显示快满了...,仔细一看系统目录仅有50GB,好吧可能真的是我忘记了,无论什么原因,这点空间肯定是不够的,毕竟重新迁移宝塔的模板和目录较为费事而且还可能出现一些未知的错误,所以需要移动/home目录转移到根目录下,按照百度教程操作没有问题...首先查看硬盘情况 代码如下: df –h 硬盘根目录(/dev/mapper/centos-root)50G空间,在安装系统时可能是真的忽略了磁盘划分,然而/home(/dev/mapper/centos-home.../centos-home 注:/dev/mapper/centos-home 就是要卸载的目录,别弄错了,操作如图,卸载之后释放空间系统会系统是否,选择“y”,如图: 操作完成后,将原/home目录的空间移动至系统的根目录...使用这个命令可以将XFS文件系统扩展到其所在的设备可用空间的最大值,最后我们输入“dh -lh”重新查看硬盘情况,如图: 系统根目录有原来的50GB扩充到923GB,原来的挂载点/home已经消失不见了

    6.6K30

    你不知道的 Vue 单元测试(6000字实战单元测试)

    不过你需要一个能够将单文件组件导入到测试中的预处理器。我们已经创建了 vue-jest 预处理器来处理最常见的单文件组件特性,但仍不是 vue-loader 100% 的功能。...;也可以新建一个文件 jest.config.js, 放在项目根目录即可。...修改目录配置 接下来就是开始编写单元测试文件了,写之前我们先把测试文件目录修改下为 __tests__,同时修改 jest.config.js 为如下配置,注意其中的 testMatch 已经修改为匹配...在项目根目录新建 __mocks__ 目录,同时新建 axios.js: const toToList = { success: true, data: ['上午去图书馆看书', '下去出去逛街...运行测试覆盖率命名后会在项目根目录生成 coverage 目录,浏览器打开里面的 index.html : ?

    11.5K41
    领券