运行用TypeScript编写的Jasminetesting
我有一个TypeScript + Node + Angular2 + Electron应用程序,目前正在尝试运行节点类的testing,也写在Typescript中。
为了构build应用程序并在电子内运行,我使用下面的tsconfig:
"compilerOptions": { "module": "system", "target": "es6", ... }
正如你所看到的,它使用了systemjs并将TS编译成JS-es6。 它工作正常,应用程序本身正在工作。
现在我需要茉莉花来join 我安装了这个npm包,更新了我的gulp任务,运行gulp-jasmine只有一个文件:
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-1声明,用SystemJs的东西包装。 当我尝试运行此testing时,出现错误:“系统未定义”。
我的问题是:
1)是否有可能运行茉莉花testing,使用systemjs loader在里面?
2)如果可能的话,我是否需要安装/configuration一些额外的东西?
3)我试图编译TS使用Module =“commonjs”,它的工作。 但是我不想为了testing和构build而编译我的源代码。 为什么没有任何额外的操作,它与commonjs正常工作?
4)我也尝试使用Module =“es6”来编译TS。 这不工作,我有一个错误“意外的保留字”。 是否有可能运行js6testing写在JS ES6没有转译成ES5?
非常感谢!
1)是否有可能运行茉莉花testing,使用systemjs loader在里面?
2)如果可能的话,我是否需要安装/configuration一些额外的东西?
你的意思是,使用systemjs作为加载程序在节点中运行jasminetesting? 我不认为茉莉花支持使用systemjs而不是加载模块的require
。 所以你的testing需要使用commonjs,但是testing代码可以使用SystemJS来加载和testing应用程序代码。 像test.js
东西可以工作,只要systemjsconfiguration正确,可以findpathWatch模块:
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(); }); }); });
system.import是asynchronous的,所以所有的茉莉花testing都需要是asynchronous的 。
3)我试图编译TS使用Module =“commonjs”,它的工作。 但是我不想为了testing和构build而编译我的源代码。 为什么它没有任何额外的操作与commonjs正常工作?
因为那么在编译的代码中就没有引用module.exports
它像其他任何节点模块一样使用module.exports
并且可以像jasmine那样加载。
4)我也尝试使用Module =“es6”来编译TS。 这不工作,我有一个错误“意外的保留字”。 是否有可能运行js6testing写在JS ES6没有转译成ES5?
Module="es6"
需要一个支持es6 import
和export
的运行时,所以它需要一个转换器和模块加载器才能在当前版本的节点上运行。
- 如何为MVC控制器函数(sails.js)编写简单的茉莉花testing
- 让Jasmine在服务器端运行
- grunt-karma RangeError最大错误
- unit testing的JavaScript代码风格
- 如何使用请求js和jasminetesting一个使用file upload的nodejs POST Web服务?
- 使用jasmine和grunt对多个版本的jquery进行testing
- JavaScript – 使用JasminetestingNodeJS readline.createInterface的实现
- SpecReporter不是茉莉花上的构造函数错误
- 茉莉花穿梭在咕噜噜唧唧喳喳的失败