[英]Karma cannot find angular2 “barrel” import
我们有一个使用桶导入模式的Angular2项目。 我正在尝试为此编写单元测试,但是Karma似乎无法找到bucket语句所引用的模块。
要测试的文件使用以下命令导入:
import {provider1, provider2, provider3} from "../../../core/providers";
import {component1} from "../../controls";
业力输出以下警告:
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不知道该如何处理。 我也不...
我试图为该桶形样式添加代理,但这没有用。
我该怎么办?
事实证明,将SystemJS与Angular2结合使用时,您需要向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);
这行是结束
...观看:
截断? 缺少true / false},
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.