Я пытаюсь интегрировать среду тестирования mocha в мое существующее приложение Angular.У меня есть настройка, работающая по назначению, но, поскольку я хочу протестировать компоненты, службы и т. Д., Я пытаюсь использовать конфигурацию Angular Test Bed, поэтому я хотел написать тестовые файлы в typcript , и это вызывает ошибки для меня.
Я пробовал разные подходы, которые дают мне разные ошибки.Сначала я установил mocha & @ types / mocha , а затем обновил package.json .Затем, когда я запустил тест npm , он выдал ошибки.Я попытался установить ts-node и включить его в конфигурацию теста и запустить тест, но это не помогло.Затем я попытался изменить модуль компилятора, а затем возникла другая ошибка.Я пытался найти SO и многие другие веб-сайты, но решения не помогли мне.
Это первая попытка.Мой test.ts файл
import { TestBed, ComponentFixture } from "@angular/core/testing";
import { LoginComponent } from 'src/app/login/login.component';
let assert = require('assert');
describe('LoginComponent', () => {
let fixture: ComponentFixture<LoginComponent>;
let component: LoginComponent;
beforeEach(function() {
TestBed.configureTestingModule({
declarations: [LoginComponent]
})
fixture = TestBed.createComponent(LoginComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('create Login component', () => {
assert.notNull(component);
});
});
и была получена следующая ошибка трассировки стека.
D:\Testing\cenium-web\test\login.component.test.ts:1
(function (exports, require, module, __filename, __dirname) { import { TestBed } from "@angular/core/testing";
SyntaxError: Unexpected token {
at new Script (vm.js:80:7)
at createScript (vm.js:274:10)
at Object.runInThisContext (vm.js:326:10)
at Module._compile (internal/modules/cjs/loader.js:664:28)
at Module.m._compile (D:\Testing\cenium-web\node_modules\ts-node\src\index.ts:439:23)
at Module._extensions..js (internal/modules/cjs/loader.js:712:10)
at Object.require.extensions.(anonymous function) [as .ts] (D:\Testing\cenium-web\node_modules\ts-node\src\index.ts:442:12)
at Module.load (internal/modules/cjs/loader.js:600:32)
at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
at Function.Module._load (internal/modules/cjs/loader.js:531:3)
at Module.require (internal/modules/cjs/loader.js:637:17)
at require (internal/modules/cjs/helpers.js:22:18)
at D:\Testing\cenium-web\node_modules\mocha\lib\mocha.js:330:36
at Array.forEach (<anonymous>)
at Mocha.loadFiles (D:\Testing\cenium-web\node_modules\mocha\lib\mocha.js:327:14)
at Mocha.run (D:\Testing\cenium-web\node_modules\mocha\lib\mocha.js:804:10)
at Object.exports.singleRun (D:\Testing\cenium-web\node_modules\mocha\lib\cli\run-helpers.js:207:16)
at exports.runMocha (D:\Testing\cenium-web\node_modules\mocha\lib\cli\run-helpers.js:300:13)
at Object.exports.handler.argv [as handler] (D:\Testing\cenium-web\node_modules\mocha\lib\cli\run.js:296:3)
at Object.runCommand (D:\Testing\cenium-web\node_modules\mocha\node_modules\yargs\lib\command.js:242:26)
at Object.parseArgs [as _parseArgs] (D:\Testing\cenium-web\node_modules\mocha\node_modules\yargs\yargs.js:1087:28)
at Object.parse (D:\Testing\cenium-web\node_modules\mocha\node_modules\yargs\yargs.js:566:25)
at Object.exports.main (D:\Testing\cenium-web\node_modules\mocha\lib\cli\cli.js:63:6)
at Object.<anonymous> (D:\Testing\cenium-web\node_modules\mocha\bin\_mocha:10:23)
at Module._compile (internal/modules/cjs/loader.js:701:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
at Module.load (internal/modules/cjs/loader.js:600:32)
at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
at Function.Module._load (internal/modules/cjs/loader.js:531:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:754:12)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
npm ERR! Test failed. See above for more details.
Это мой tsconfig.json файл.
{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./",
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"module": "es2015",
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"importHelpers": true,
"target": "es5",
"types": ["node", "mocha"],
"typeRoots": ["node_modules/@types"],
"lib": ["es2018", "dom"],
"paths": {
"cComponents": ["dist/cComponents"],
"cComponents/*": ["dist/cComponents/*"]
}
}
}
Затем я попытался изменить модуль компилятора с es2015 на commonjs .
Это вызвало другую ошибку в путях, я думаю
Error: Cannot find module 'src/app/login/login.component'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:582:15)
at Function.Module._load (internal/modules/cjs/loader.js:508:25)
at Module.require (internal/modules/cjs/loader.js:637:17)
at require (internal/modules/cjs/helpers.js:22:18)
at Object.<anonymous> (D:\Testing\cenium-web\test\login.component.test.ts:2:1)
at Module._compile (internal/modules/cjs/loader.js:701:30)
at Module.m._compile (D:\Testing\cenium-web\node_modules\ts-node\src\index.ts:439:23)
at Module._extensions..js (internal/modules/cjs/loader.js:712:10)
at Object.require.extensions.(anonymous function) [as .ts] (D:\Testing\cenium-web\node_modules\ts-node\src\index.ts:442:12)
at Module.load (internal/modules/cjs/loader.js:600:32)
at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
at Function.Module._load (internal/modules/cjs/loader.js:531:3)
at Module.require (internal/modules/cjs/loader.js:637:17)
at require (internal/modules/cjs/helpers.js:22:18)
at D:\Testing\cenium-web\node_modules\mocha\lib\mocha.js:330:36
at Array.forEach (<anonymous>)
at Mocha.loadFiles (D:\Testing\cenium-web\node_modules\mocha\lib\mocha.js:327:14)
at Mocha.run (D:\Testing\cenium-web\node_modules\mocha\lib\mocha.js:804:10)
at Object.exports.singleRun (D:\Testing\cenium-web\node_modules\mocha\lib\cli\run-helpers.js:207:16)
at exports.runMocha (D:\Testing\cenium-web\node_modules\mocha\lib\cli\run-helpers.js:300:13)
at Object.exports.handler.argv [as handler] (D:\Testing\cenium-web\node_modules\mocha\lib\cli\run.js:296:3)
at Object.runCommand (D:\Testing\cenium-web\node_modules\mocha\node_modules\yargs\lib\command.js:242:26)
at Object.parseArgs [as _parseArgs] (D:\Testing\cenium-web\node_modules\mocha\node_modules\yargs\yargs.js:1087:28)
at Object.parse (D:\Testing\cenium-web\node_modules\mocha\node_modules\yargs\yargs.js:566:25)
at Object.exports.main (D:\Testing\cenium-web\node_modules\mocha\lib\cli\cli.js:63:6)
at Object.<anonymous> (D:\Testing\cenium-web\node_modules\mocha\bin\_mocha:10:23)
at Module._compile (internal/modules/cjs/loader.js:701:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
at Module.load (internal/modules/cjs/loader.js:600:32)
at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
at Function.Module._load (internal/modules/cjs/loader.js:531:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:754:12)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
npm ERR! Test failed. See above for more details.
Я получил замечание, что мне нужно использовать что-то вроде webpack для разрешения этих модулей.Это правильно?Если возможно, кто-нибудь может направить меня к решению?
Я хочу использовать конфигурацию TestBed в моих существующих тестовых файлах для тестирования моих компонентов.Буду признателен, если кто-нибудь сможет мне помочь, так как я новичок в тестировании.Заранее спасибо.Надеюсь, что информации достаточно.