Angular 2测试无法加载自定义包

时间:2017-01-30 14:20:07

标签: javascript node.js unit-testing angular typescript

我正在关注现有项目的官方角度指南。

我使用自定义库,downloadjs在运行应用程序时运行正常。但是在测试运行时我在控制台中出错:

"__zone_symbol__zoneAwareStack": "Error: (SystemJS) XHR error (404 Not Found) loading node_modules/downloadjs/download.js\n\tError: XHR error (404 Not Found) loading node_modules/downloadjs/download.js\n\tError loading node_modules/downloadjs/download.js as \"downloadjs\" from app/utilities/file-handler.utility.js"

我使用npm install downloadjs来获取该工具。

file-handler.utility.js如下:

import {Injectable} from "@angular/core";
import downloadjs=require("downloadjs");
@Injectable()
export class FileHandler{

  public static download(fileToDownload: any) {
    downloadjs(fileToDownload, "filename.txt" ,"text/plain");
  }   
}

我在同一个文件夹中创建了一个defs.spec.ts文件:

declare module 'downloadjs'{
    function download(data:any, strFileName:string, strMimeType:string):void;

        export = download;
}

并添加了systemjs.config.js的路径:

 // other libraries
      'rxjs':                      'npm:rxjs',
      'angular-in-memory-web-api': 'npm:angular-in-memory-web-api/bundles/in-memory-web-api.umd.js',
      'downloadjs': 'npm:downloadjs/download.js'

所以这与npm start.

运行良好

但正如指南所述,在创建1st.spec.ts之后:

describe('1st tests', () => {
  it('true is true', () => expect(true).toBe(true));
});

这会抛出我粘贴在顶部的错误。谢谢你的时间!

1 个答案:

答案 0 :(得分:1)

问题与defs.spec.ts位置有关。我们决定使用现有的angular 2模板,在与它集成后,测试现在可以正常工作。