Разрешение импорта при попытке протестировать Typescript в угловом формате с использованием фреймворка Mocha. - PullRequest
1 голос
/ 10 апреля 2019

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

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