如何为typescript项目设置jasmine

Ami*_*mid 9 jasmine typescript

我需要一些指导如何使用Jasmine设置TypeScript项目的单元测试.

测试规范文件如下所示:

/// <reference path="../../../typings/tsd.d.ts" />
import {Mediator} from '../../../services/remoting/Mediator';

describe('Mediator', () =>
{
    let mediator: Mediator;

    beforeEach(() => 
    {
        mediator = new Mediator();
    });

    it('blah blah', () =>
    {
        expect(mediator.TEST).toBeDefined();
    });
});
Run Code Online (Sandbox Code Playgroud)

我使用npm jasmine模块来运行测试.jasmine.json指向内置的JS规范文件,如下所示:

{
  "spec_dir": "build/spec",
  "spec_files": [
    "**/*.js"
  ]
}
Run Code Online (Sandbox Code Playgroud)

构建规范文件如下所示:

/// <reference path="../../../typings/tsd.d.ts" />
define(["require", "exports", '../../../services/remoting/Mediator'], function (require, exports, Mediator_1) {
    describe('factory: Mediator', function () {
        var mediator;
        beforeEach(function () {
            mediator = new Mediator_1.Mediator();
        });
        it('should have defined all required fields', function () {
            expect(mediator.ExecuteQuery).toBeDefined();
        });
    });
});
//# sourceMappingURL=Mediator.spec.js.map
Run Code Online (Sandbox Code Playgroud)

当我尝试运行测试jasmine抱怨未定义的'define'函数时:

ReferenceError: define is not defined
Run Code Online (Sandbox Code Playgroud)

我试图搜索TypeScript + Jasmine,但没有太多信息(我不想使用完整的VisualStudio).所以如果有人能指出我如何设置打字稿+茉莉花以及我的错误在哪里,我将不胜感激.

提前致谢.

Fen*_*ton 5

看起来您正在使用--module amd为异步模块设计的标志进行编译(就像使用RequireJS时一样).

如果您在Node上运行,则需要提供--module commonjs.这将导致以下输出:

var mediator_1 = require('../../../services/remoting/Mediator');
Run Code Online (Sandbox Code Playgroud)

(虽然变量的名称可能会因为在编译ES6样式导入时为您动态创建名称而更改).