如何从 VSCode 中的多个位置运行笑话测试
Posted
技术标签:
【中文标题】如何从 VSCode 中的多个位置运行笑话测试【英文标题】:how to run jest test from multiple locations in VSCode 【发布时间】:2020-07-17 23:19:41 【问题描述】:我设法在一定程度上模拟了 typeorm,但现在我面临一个奇怪的问题,我将在这里说明。
import myEntity from './entity';
import typeorm = require('typeorm');
describe('test suire'), () =>
let myRepository: typeorm.Repository<myEntity>;
test('my test case', () =>
typeorm.Repository = jest.fn().mockReturnValue(
createQueryBuilder: jest.fn().mockReturnValue(
where: jest.fn().mockReturnThis(),
getMany: jest.fn().mockReturnValue([]);
)
);
myRepository = new typeorm.Repository();
expect(myRepository.createQueryBuilder).toHaveBeenCalledTimes(0);
)
)
我有一个这样的包结构:
root/
package.json
project1/
package.json
src/
the_above_test.spec.ts
当我从project1
运行node_modules/.bin/jest path_to_above_test.spec.ts
时,它可以工作。但是当我从root
运行相同的命令时,我得到:
Matcher error: received value must be a mock or spy function
Received has value: undefined at line:
expect(myRepository.createQueryBuilder).toHaveBeenCalledTimes(0);
这里的目的是在 VS Code 中调试测试。但由于 VS 代码在根级别打开,它从那里执行测试。如果我的代码没有错误,我如何告诉 VS Code 从project1
目录运行测试?
【问题讨论】:
@AluanHaddad 对不起,我想我不明白。这一切都开始了,因为我想从根级别打开的 Visual Code 运行 Jest。如果我可以告诉 VS Code 中的 Jest 从 project1 运行,我就不会遇到这个问题,但我想不通。 这当然可以,但我的目的是能够在 VS Code 中进行调试。 @AluanHaddad 我解决了这个问题。 【参考方案1】:您可以在/.vscode/launch.json
中指定不同的笑话配置
每个配置都有自己的工作目录,使用 "cwd"
指定。
这是一个工作示例:
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
"type": "node",
"name": "functions",
"request": "launch",
"program": "$workspaceFolder/packages/functions/node_modules/jest/bin/jest",
"args": [
"./test/eventHooks.test.ts",
"--runInBand"
],
"cwd": "$workspaceFolder/packages/functions",
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen"
,
"type": "node",
"name": "functions",
"request": "launch",
"program": "$workspaceFolder/packages/types/node_modules/jest/bin/jest",
"args": [
"./test/eventHooks.test.ts",
"--runInBand"
],
"cwd": "$workspaceFolder/packages/types",
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen"
]
【讨论】:
以上是关于如何从 VSCode 中的多个位置运行笑话测试的主要内容,如果未能解决你的问题,请参考以下文章