Я занимаюсь разработкой службы 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
.
Совершенно ясно, что я что-то упустил, но я не могу видеть что.