我们有一个使用桶导入模式的Angular2项目。我正在尝试为它编写单元测试,但是Karma似乎无法找到桶语句引用的模块。
正在测试的文件使用:
导入import {provider1, provider2, provider3} from "../../../core/providers";
import {component1} from "../../controls";
karma输出以下警告:
13 05 2016 08:57:43.732:WARN [web-server]: 404: /base/src/app/core/providers
13 05 2016 08:57:43.732:WARN [web-server]: 404: /base/src/app/core/controls
现在加载我们的客户端脚本的karma配置文件部分:
// paths loaded via module imports
{ pattern: "src/app/**/*.js", included: false, watched: true },
// paths to support debugging with source maps in dev tools
{ pattern: "src/app/**/*.ts", included: false, watched: false },
这个应加载所有客户端脚本,但我认为由于我是单元测试的文件使用桶导入,因此Karma不知道如何处理它。我也不是......
我试图为这个桶模式添加代理,但这不起作用。
我该怎么办?
答案 0 :(得分:4)
事实证明,使用带有Angular2的SystemJS,您需要为SystemJS配置文件提供有关“桶”意味着什么的信息,或者TypeScript在编译项目时不知道要查找什么。意思是,当你说:
import {component1} from "../../controls";
默认情况下,TypeScript会查找“../../controls.js”,除非你告诉它不要。在我的主配置文件中,我为SystemJS指定了一些映射,以便知道在这些桶中查找的内容如下:
packages: {
"src/path/path/controls": {
"main": "index"
},
"src/path/path/providers": {
"main": "index"
}
},
但是,我还需要将其添加到karma-test-shim.js
文件中,以便Karma知道要查找的内容。
将此内容添加到我的karma-test-shim.js
文件后,它运行正常。
var packages = {
"base/src/path/path/controls": {
"main": "index"
},
"base/src/path/path/providers": {
"main": "index"
}
};
System.config(packages);
答案 1 :(得分:0)
是结尾的行
......看着:
截断?缺少真/假},