tns*_*day 6 javascript testing jestjs
在我的项目文件夹中,我有很多子文件夹,每个子文件夹中都有 js 代码和 test.js 文件。我希望能够测试特定文件。例如,假设我们的项目文件夹中有“fib”文件夹:
\nC:.\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80exercises\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80fib\n fib-test.js\n index.js\nRun Code Online (Sandbox Code Playgroud)\n现在,从练习文件夹中执行 jest 命令:
\njest fib\\fib-test.js\nRun Code Online (Sandbox Code Playgroud)\n我得到:
\nNo tests found, exiting with code 1\nRun with `--passWithNoTests` to exit with code 0\nIn C:\\exercises\n 62 files checked.\n testMatch: **/__tests__/**/*.[jt]s?(x), **/?(*.)+(spec|test).[tj]s?(x) - 26 matches\n testPathIgnorePatterns: \\\\node_modules\\\\ - 62 matches\n testRegex: - 0 matches\nPattern: fib\\fib-test.js - 0 matches\nRun Code Online (Sandbox Code Playgroud)\n如果我只是开玩笑,我将运行所有测试。如果我将 fib 文件夹移出练习文件夹,它会按预期工作。这是所有文件的代码:
\n索引.js:
\nfunction fib(n) {}\n\nmodule.exports = fib;\nRun Code Online (Sandbox Code Playgroud)\n测试.js:
\nconst fib = require(\'./index\');\n\ntest(\'Fib function is defined\', () => {\n expect(typeof fib).toEqual(\'function\');\n});\n\ntest(\'calculates correct fib value for 1\', () => {\n expect(fib(1)).toEqual(1);\n});\n\ntest(\'calculates correct fib value for 2\', () => {\n expect(fib(2)).toEqual(1);\n});\n\ntest(\'calculates correct fib value for 3\', () => {\n expect(fib(3)).toEqual(2);\n});\n\ntest(\'calculates correct fib value for 4\', () => {\n expect(fib(4)).toEqual(3);\n});\n\ntest(\'calculates correct fib value for 15\', () => {\n expect(fib(39)).toEqual(63245986);\n});\nRun Code Online (Sandbox Code Playgroud)\n包.json:
\n{\n "name": "dev",\n "version": "1.0.0",\n "description": "",\n "main": "index.js",\n "scripts": {\n "test": "echo \\"Error: no test specified\\" && exit 1"\n },\n "jest": {\n "testEnvironment": "node"\n },\n "author": "",\n "license": "ISC"\n}\nRun Code Online (Sandbox Code Playgroud)\n我已经尝试了所有这些解决方案但没有成功:
\n\n但能够通过 --watch 标志运行 jest 命令来实现所需的结果,然后在正则表达式菜单中输入 fib\\test.js 的相对路径。问题是不进入手表菜单怎么办?
\n小智 4
fib-test.js为fib.test.jsjest fib.test.jsjest将运行您指定的文件jest XXX.test.js YYY.test.js我发现你的问题隐含着一些假设。如果您明确列出它们,您可以使问题更加具体:
jest.config.js位于C:\exercises对于 (1),我手头没有 Windows 计算机,请运行并验证我的解决方案。
抛开假设不谈,错误发生在您的测试文件名:fib-test.js. jest正在寻找XXX.test.js并且不会匹配和测试XXX-test.js。您可以在错误消息中找到线索:
testMatch: ... **/?(*.)+(spec|test).[tj]s?(x) ...
Run Code Online (Sandbox Code Playgroud)
将文件重命名为 后fib.test.js,jest fib.test.js将从项目根目录或以下位置搜索所有子文件夹jest.config.js;并匹配和测试特定的测试文件。
我的jest版本:"ts-jest": "^27.0.3"
再次查看完整的错误消息:
testMatch: **/__tests__/**/*.[jt]s?(x), **/?(*.)+(spec|test).[tj]s?(x) - 26 matches
Run Code Online (Sandbox Code Playgroud)
实际上,您可以将所有测试用例分组<rootDir>/__tests__/并放入__test__,.gitignore这样您的测试用例就可以保密并且不会推送到 Git。
因为jest查看每个子文件夹,所以您实际上可以将文件夹名称放在测试文件之前:
jest fib/fib.test.js本质上相当于jest fib.test.js
不过,开玩笑,我看不出有什么理由让自己如此烦恼。
| 归档时间: |
|
| 查看次数: |
16253 次 |
| 最近记录: |