我正在使用karma,jasmine,typescript为来自https://angular.io/docs/js/latest/quickstart.html的helloworld应用程序编写单元测试。
以下是测试代码:
///<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");
});
});
业力未能进行单元测试:
未捕获错误:尚未为上下文加载模块名称“../myAppComponent”:_。使用require([]) http://requirejs.org/docs/errors.html#notloaded at /Users/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”在已转换的js文件上抛出以下错误:
未捕获的错误:匿名的define()模块不匹配:function(require,exports,spray1_1){ describe(“name is Alice”,function(){ var comp = new spray1_1.MyAppComponent(); 它(“验证名称”,函数(){ 期待(comp.name).toBe( “爱丽丝”); }); }); } http://requirejs.org/docs/errors.html#mismatch 在/Users/spray1/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)。哪种方式是正确的方法以及如何使其工作?感谢任何帮助!
答案 0 :(得分:1)
因此,您提供的链接是快速入门的JavaScript版本,但看起来您正在使用TypeScript。
我建议查看TypeScript version of the quickstart documentation。它有一个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" ] }