当前位置: 首页 > 知识库问答 >
问题:

使用Jest测试特定文件

齐昊焱
2023-03-14

在我的项目文件夹中,我有很多子文件夹,每个子文件夹中都有js代码和test.js文件。我想能够测试特定的文件。例如,假设在我们的项目文件夹中有“fib”文件夹:

C:.
└───exercises
    └───fib
            fib-test.js
            index.js

现在,我从练习文件夹中执行jest命令:

jest fib\fib-test.js

我得到:

No tests found, exiting with code 1
Run with `--passWithNoTests` to exit with code 0
In C:\exercises
  62 files checked.
  testMatch: **/__tests__/**/*.[jt]s?(x), **/?(*.)+(spec|test).[tj]s?(x) - 26 matches
  testPathIgnorePatterns: \\node_modules\\ - 62 matches
  testRegex:  - 0 matches
Pattern: fib\fib-test.js - 0 matches

如果我只是开玩笑,我会做所有的测试。如果我将fib文件夹移出练习文件夹,它会按预期工作。以下是所有文件的代码

index.js:

function fib(n) {}

module.exports = fib;

test.js:

const fib = require('./index');

test('Fib function is defined', () => {
  expect(typeof fib).toEqual('function');
});

test('calculates correct fib value for 1', () => {
  expect(fib(1)).toEqual(1);
});

test('calculates correct fib value for 2', () => {
  expect(fib(2)).toEqual(1);
});

test('calculates correct fib value for 3', () => {
  expect(fib(3)).toEqual(2);
});

test('calculates correct fib value for 4', () => {
  expect(fib(4)).toEqual(3);
});

test('calculates correct fib value for 15', () => {
  expect(fib(39)).toEqual(63245986);
});

package.json:

{
  "name": "dev",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "jest": {
    "testEnvironment": "node"
  },
  "author": "",
  "license": "ISC"
}

我尝试了所有这些解决方案,但都没有成功:

  1. 在Jest中运行特定测试套件的单个测试
  2. 如何使用Jest运行单个测试?
  3. 如何使用Jest测试单个文件?

但是,通过使用--watch标志运行jest命令,然后在regex菜单中输入fib\test.js的相对路径,就能够获得所需的结果。问题是如何做到这一点,而不进入手表菜单?

共有1个答案

公良理
2023-03-14
  1. 将测试文件fib-test.js重命名为fib.test.js
  2. 运行jestfib.test.js
  3. volia,jest将运行您指定的文件
  4. 您也可以通过jest XXX测试任意数量的指定测试文件。test.jsYYY。test.js

我看到你的问题隐含着一些假设。如果明确列出问题,可以使问题更具体:

  1. 您正在Windows计算机上运行
  2. 您的项目根目录或jest.config.js位于C:\exercises

对于(1),我手头没有Windows计算机,请运行

撇开假设不谈,错误发生在测试文件名:fib test.jsjest正在查找XXX.test.js并且将不匹配

testMatch: ... **/?(*.)+(spec|test).[tj]s?(x) ...

一旦将文件重命名为fib.test.jsjest-fib.test.js将从项目根目录或jest.config.js处搜索任何子文件夹;和匹配

我的jest版本:"ts-jest":"^27.0.3"

再次查看完整的错误消息:

testMatch: **/__tests__/**/*.[jt]s?(x), **/?(*.)+(spec|test).[tj]s?(x) - 26 matches

实际上,您可以将所有测试用例分组到

因为jest查看每个子文件夹,所以实际上可以将文件夹名称放在测试文件之前:

jest-fib/fib.test.js本质上等同于jest-fib.test.js

不过,笑话看不出有什么理由这么麻烦自己。

 类似资料:
  • 我是单元测试新手,我只想测试位于特定目录中的文件 如何指定只对特定目录上的文件运行测试,而忽略其他文件 所以我通过npm安装了jest 并在package.json中指定了测试命令 上面运行的所有文件,但我希望它运行的文件在一个特定的目录,例如 我要怎么进行

  • 问题内容: 我有一个取决于环境变量的应用程序,例如: 我想测试例如: 可以通过节点env变量设置APP_PORT。 或某个应用程序正在使用以下命令设置的端口上运行 我如何用Jest做到这一点?我可以在每次测试之前设置这些变量,还是应该以某种方式模拟它? 问题答案: 在每次测试之前重设resetModules,然后在测试内部动态导入模块很重要: 如果您在运行Jest之前寻找一种加载env值的方法,请

  • 我试图理解Jests的异步测试。 我的模块有一个函数,它接受一个布尔值并返回一个值的承诺。executer函数调用 ,在超时回调中,promise根据最初提供的布尔值进行解析或拒绝。代码如下所示: 我想用Jest来测试一下。我想我需要使用Jest提供的模拟计时器,所以我的测试脚本看起来有点像这样: 无论是否调用 ,我都会得到以下错误/失败测试 你能解释一下我哪里出错了吗?我该怎么做才能通过考试,保

  • 我使用Jest框架,并有一个测试套件。我想关闭/跳过我的一个测试。 谷歌文档并没有给我答案。 你知道要查的答案或信息来源吗?