как запустить шутник из нескольких мест в VSCode - PullRequest
2 голосов
/ 06 апреля 2020

Мне удалось в некоторой степени смоделировать 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

Когда я запускаю node_modules/.bin/jest path_to_above_test.spec.ts из project1, это работает. Но когда я запускаю ту же команду из root, я получаю:

Matcher error: received value must be a mock or spy function

Received has value: undefined at line:

    expect(myRepository.createQueryBuilder).toHaveBeenCalledTimes(0);

Цель здесь - отладить тест из кода VS. Но так как код VS открыт на уровне root, он выполняет тест оттуда. Если в моем коде нет ошибки, как я могу сказать VS Code запустить тест из каталога project1?

1 Ответ

2 голосов
/ 06 апреля 2020

Вы можете указать различные конфигурации jest в вашем /.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"

        }

    ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...