Тестирование Angular сервисов с Mocha с использованием интерактивного отладчика VSCode - PullRequest
0 голосов
/ 04 мая 2020

Я занимаюсь разработкой службы Angular, которая использует WebSocket, и я хотел бы запустить некоторые тесты этой службы непосредственно из окна отладки VSCode, как я делаю это регулярно при разработке любого приложения node . Служба очень проста, не зависит от DI или других Angular средств, поэтому я ожидаю, что можно будет протестировать ее непосредственно с помощью VSCode, как это видно из документации здесь .

Код теста:

import { MyService } from './my-service.service';
import { environment } from '../../environments/environment';

describe('MyService', () => {
  it('do something with a WebSocket and test the result', (done) => {
    const myService = new MyService();
    const conn = new WebSocket(environment.serverAddress);
    // do some more stuff and test the results
  });
});

Все работает нормально, если я запускаю этот тест с помощью команды CLI ng test Angular.

Проблемы начинаются, когда я пытаюсь запустить этот тест непосредственно из VSCode с помощью интерактивного отладчика. Чтобы запустить тест из окна отладки VSCode, я сделал 2 вещи.

Я добавил tsconfig.test. json файл, подобный этому

{
  "compilerOptions": {
    "target": "es6",
    "module": "commonjs",
    "outDir": "dist",
    "sourceMap": true,
    "declaration": true,
    "experimentalDecorators": true
  },
  "include": ["src/**/*.ts"],
  "exclude": ["node_modules"],
  "typeRoots": ["node_modules/@types"],
  "lib": ["es2018", "dom"]
}

и конфигурация при запуске . json, где я ссылаюсь на файл tsconfig.test. json, например,

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Current TS Tests File",
      "type": "node",
      "request": "launch",
      "env": { "TS_NODE_PROJECT": "tsconfig.test.json" },
      "program": "${workspaceRoot}/node_modules/mocha/bin/_mocha",
      "args": ["-r", "ts-node/register", "${relativeFile}"],
      "cwd": "${workspaceRoot}",
      "protocol": "inspector"
    }
  ]
}

После этого, если я запускаю тест из окна отладки VSCode, я получаю сообщение об ошибке ReferenceError: expect is not defined.

Я могу преодолеть эту ошибку, импортируя expect из chai, но затем я получаю вторую ошибку, говорящую ReferenceError: WebSocket is not defined.

Совершенно ясно, что я что-то упустил, но я не могу видеть что.

...