2017-03-08 38 views
1

我有一个类似于下面的Angular 2服务。它运行正常,但是当运行单元测试时(即使没有任何期望),它会因下面的TypeError失败。我的服务是用TypeScript编写的,并具有正确的导入。但是,有一个用JavaScript编写的节点模块(作为module.export = ....),所以我不能导入它,而是“需要”它。我想知道我怎么可以嘲笑这个或者正确地注入它,所以它在单元测试中不会失败。它在实践中运行良好,只是测试用例失败。如何在Angular 2 spec文件中处理require()

角2 Servive:

let x = require('some-file') 

@Injectable() 
export class MyService { 
    constructor() { 
    x(foo) 
    } 
} 

角2测试文件:

describe('Service: MyService',() => { 

    let service: MyService; 

    beforeEach(() => { 
    TestBed.configureTestingModule({ 
     providers: [MyService] 
    }); 
    }); 

    beforeEach(inject([NativeBridgeService], s => { 
    service = s; 
    })); 

}); 

类型错误:x不是一个函数

回答

0

你必须intstall分型为库。然后你可以使用lib来导入不需要的东西。尝试

npm install @types/<here goes your lib name> 

如果他们不存在,自己写。

+0

这是我写的一个自定义js库。我只需要添加一些TypeScript类型定义文件?例如。 d.ts? – user2516663

+0

yeap,如果你是作者,你也可以将d.ts文件放在lib – kit

+0

尽管如此,快速的问题是,d.ts文件是这样的: export * from'my-module' – user2516663