如何从 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 中的多个位置运行笑话测试的主要内容,如果未能解决你的问题,请参考以下文章

顺风复杂类(焦点等)和苗条项目中的笑话出错。仅在运行测试时

如果 thunk 动作创建者中的 thunk 动作已被调度,我如何检查一个笑话测试?

如何检查控制台中的笑话覆盖率?

我有一个笑话我如何导入到多个测试文件

运行笑话测试时出现意外的令牌导入错误

管理中的笑话,笑话中的管理(犹太人的智慧)