业力无法找到angular2“桶”导入

时间:2016-05-13 14:25:12

标签: angular karma-runner karma-jasmine

我们有一个使用桶导入模式的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不知道如何处理它。我也不是......

我试图为这个桶模式添加代理,但这不起作用。

我该怎么办?

2 个答案:

答案 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)

是结尾的行

......看着:

截断?缺少真/假},