【发布时间】:2014-09-17 19:03:18
【问题描述】:
我正在尝试使用 karma/jasmine 为 SPA 设置单元测试
首先,以下测试在 karma 中运行良好:
/// <reference path="../../definitions/jasmine/jasmine.d.ts" />
/// <reference path="../../src/app/domain/core/Collections.ts"/>
define(["app/domain/core/Collections"], (collections) => {
describe('LinkedList', () => {
it('should be able to store strings for lookup', () => {
var list = new collections.Collections.LinkedList<string>();
list.add("item1");
expect(list.first()).toBe("item1");
});
});
});
但是,collections 是 any 类型,因此我不能将其用于类型声明,因此在编写测试时我缺少智能感知等。不好!
当我尝试将测试重写为对 TypeScript 更友好的格式时,问题就出现了:
/// <reference path="../../definitions/jasmine/jasmine.d.ts" />
/// <reference path="../../src/app/domain/core/Collections.ts"/>
import c = require("./../../src/app/domain/core/Collections");
describe('LinkedList', () => {
it('should be able to store strings for lookup', () => {
var list: c.Collections.LinkedList<string> = new c.Collections.LinkedList<string>();
list.add("item1");
expect(list.first()).toBe("item1");
});
});
这编译得很好,我得到了方便的智能感知等的类型信息,但现在 karma 抛出一个错误。
事实证明它正在尝试加载 没有 .js 后缀的模块,由以下错误消息指示:
There is no timestamp for /base/src/app/domain/core/Collections!
Failed to load resource: the server responded with a status of 404 (Not Found)
(http://localhost:9876/base/src/app/domain/core/Collections)
Uncaught Error: Script error for: /base/src/app/domain/core/Collections
我现在就到此为止,但如果有帮助的话,我很高兴提供我的 karma 配置文件、test-main 等。但我希望有人以前遇到过这个确切的问题,并且可能能够指出我正确的方向。
我的打字稿是用 AMD 标志编译的。
【问题讨论】:
标签: javascript requirejs typescript jasmine karma-runner