Javascript 运行用TypeScript编写的Jasmine测试
我有一个Typescript+Node+Angular2+Electron应用程序,目前正在尝试为节点类运行测试,也是用Typescript编写的 为了构建应用程序并在electron中运行它,我使用以下tsconfig:Javascript 运行用TypeScript编写的Jasmine测试,javascript,node.js,typescript,jasmine,systemjs,Javascript,Node.js,Typescript,Jasmine,Systemjs,我有一个Typescript+Node+Angular2+Electron应用程序,目前正在尝试为节点类运行测试,也是用Typescript编写的 为了构建应用程序并在electron中运行它,我使用以下tsconfig: "compilerOptions": { "module": "system", "target": "es6", ... } 如您所见,它使用systemjs并将TS编译成JS-es6。它工作正常,应用程序本身也在工作 现在我需要茉莉花加入。我
"compilerOptions": {
"module": "system",
"target": "es6",
...
}
如您所见,它使用systemjs并将TS编译成JS-es6。它工作正常,应用程序本身也在工作
现在我需要茉莉花加入。我安装了这个npm包,更新了我的gulp任务以运行gulp jasmine,只需1个文件:
gulp.task('jasmine', function() {
gulp.src('./test/test.js')
.pipe(jasmine())
});
这就是我的test.js的样子:
System.register(["./models-src/app/models/pathWatch/pathWatch"], function(exports_1, context_1) {
"use strict";
var __moduleName = context_1 && context_1.id;
var pathWatch_1;
return {
setters:[
function (pathWatch_1_1) {
pathWatch_1 = pathWatch_1_1;
}],
execute: function() {
describe("Run Application:", () => {
it("starts", () => {
var pw1 = new pathWatch_1.PathWatch();
expect(true).toEqual(true);
});
});
}
}
});
所以,没什么特别的,1 import-1test-1assert,用SystemJs材料包装。
当我尝试运行这个测试时,我有一个错误:“系统未定义”
我的问题是:
1) 可以在内部使用systemjs加载程序运行jasmine测试吗
2) 如果可能的话,我需要安装/配置一些额外的东西吗
3) 我试着使用Module=“commonjs”编译TS,它正在工作。但是我不想为了测试和构建而对源代码进行不同的编译。为什么它可以在没有任何额外操作的情况下使用commonjs
4) 我还尝试使用Module=“es6”编译TS。它不工作,我有一个错误“意外保留字”。是否可以运行JSES6编写的jasmine测试,而不将它们传输到es5中
非常感谢
1) 可以在内部使用systemjs加载程序运行jasmine测试吗
2) 如果可能的话,我是否需要安装/配置一些附加功能
东西
你是说,使用systemjs作为加载程序在节点中运行jasmine测试?我认为jasmine不支持使用systemjs而不是require
来加载模块。所以您的测试需要使用commonjs,但测试代码可以使用SystemJS加载和测试应用程序代码。如果systemjs配置正确,并且可以找到pathWatch模块,则test.js中类似的东西可以工作:
describe("Run Application:", () => {
it("starts", (done) => {
var system = require('systemjs');
system.config({
// systemjs config here
//
});
system.import('path-to-path-watch-module').then(pathWatch => {
var pw = new pathWatch.PathWatch();
expect(true).toEqual(true);
done();
});
});
});
导入是异步的,所以所有jasmine测试也需要异步
3) 我试着使用Module=“commonjs”编译TS,它正在工作。但是
我不想为测试和构建以不同的方式编译源代码。为什么?
在没有任何额外操作的情况下,commonjs可以正常工作吗
因为在编译的代码中没有对系统的引用-它使用模块。像任何其他节点模块一样导出
,并且可以由jasmine按原样加载
4) 我还尝试使用Module=“es6”编译TS。我觉得这不管用
出现错误“意外保留字”。能跑吗
jasmine测试是用JSES6编写的,没有将它们转换成es5吗
Module=“es6”
需要一个支持es6导入和导出的运行时,因此它需要一个transpiler和模块加载器,才能在当前版本的节点上运行。请将问题限制为每个问题一个问题。在一篇帖子中问多个问题会让你很难对问题和答案进行投票。