我需要一些如何使用Jasmine设置TypeScript项目单元测试的指导。
测试规范文件如下所示:
{
"spec_dir": "build/spec",
"spec_files": [
"**/*.js"
]
}
我使用npm jasmine模块来运行测试。 jasmine.json指向这样构建的JS规范文件:
/// <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
构建规范文件如下所示:
ReferenceError: define is not defined
当我尝试运行测试jasmine抱怨未定义的'define'函数时:
SELECT tbl_b.ID, tbl_b.NAME, tbl_b.LAST_NAME,
(select COUNT(*) from tbl_a where tbl_a.id = tbl_b.id) as TOTAL
FROM tbl_b
WHERE tbl_b.UNTIL_DATE >= NOW()
我曾尝试搜索TypeScript + Jasmine,但没有太多信息(我不想使用完整的VisualStudio)。所以如果有人能指出我如何设置打字稿+茉莉花以及我的错误在哪里,我将不胜感激。
提前致谢。
答案 0 :(得分:5)
看起来您正在使用--module amd
标志进行编译,该标志是为异步模块设计的(例如,当您使用RequireJS时)。
如果您在Node上运行,则需要提供--module commonjs
。这将产生以下输出:
var mediator_1 = require('../../../services/remoting/Mediator');
(虽然变量的名称可能会因为在编译ES6样式导入时为您动态创建名称而改变。)