Unit test с использованием typescript и кармы

Я использую карму, жасмин, typescript, чтобы написать unit test для приложения helloworld из https://angular.io/docs/js/latest/quickstart.html.

Ниже приведен тестовый код:

///<reference path="../typings/jasmine/jasmine.d.ts"/>

import {
    MyAppComponent
} from '../spray1';

describe("name is Alice", () => {
    var comp = new MyAppComponent();

    it("verify name", () => {
        expect(comp.name).toBe("Alice"); 
    });
});

tsc (с "-module commonjs" ) транслирует этот тестовый код в:

///<reference path="../typings/jasmine/jasmine.d.ts"/>
var spray1_1 = require('../spray1');
describe("name is Alice", function () {
    var comp = new myAppComponent_1.MyAppComponent();
    it("verify name", function () {
        expect(comp.name).toBe("Alice");
    });
});

karma не запускает unit test:

Ошибка поиска: имя модуля "../myAppComponent" еще не загружено для контекста: _. Используйте require ([])   http://requirejs.org/docs/errors.html#notloaded  at/Пользователи/spray1/web2/node_modules/requirejs/require.js:141

Chrome 43.0.2357 (Mac OS X 10.10.3): Выполнено 0 из 0 УСПЕХ (0 сек /0 сек)

Если я использую tsc с "--module amd", тестовый код переполнения:

define(["require", "exports", '../spray1'], function (require, exports, spray1_1) {
    describe("name is Alice", function () {
        var comp = new spray1_1.MyAppComponent();
        it("verify name", function () {
            expect(comp.name).toBe("Alice");
        });
    });
});

"karma start test/karma.conf.js" бросил ниже ошибку в файлах transpiled js:

Непринятая ошибка: Неисправен анонимный метод define(): функция (require, exports, spray1_1) {         описать ( "name is Alice", function() {             var comp = new spray1_1.MyAppComponent();             it ( "verify name", function() {                 ожидать (comp.name).toBe( "Алиса" );             });         });     }     http://requirejs.org/docs/errors.html#mismatch    в /Users/spray 1/web2/node_modules/requirejs/require.js:141 Chrome 43.0.2357 (Mac OS X 10.10.3): Выполнено 0 из 0 ОШИБКА (0,04 сек /0 сек)

Как вы видите, у меня есть проблемы с тем, чтобы он работал в любом случае (--module commonjs/amd). Каким образом это правильный путь и как заставить его работать? Цените любую помощь!

Ответ 1

Итак, ссылка, которую вы предоставили, - это версия быстрого запуска для JavaScript, но, похоже, вы используете TypeScript.

Я бы предложил посмотреть TypeScript версию документации быстрого запуска. Он имеет файл tsconfig.json, который обеспечивает соответствующую цель компиляции:

{
  "compilerOptions": {
    "target": "es5",
    "module": "system",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": false
  },
  "exclude": [
    "node_modules",
    "typings/main",
    "typings/main.d.ts"
  ]
}