2017-03-08 24 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

相關問題