2016-12-07 97 views
2

我有一些遺留代碼,我想開始單元測試。是這樣的一類:獲取TypeScript類的實例?

export class Controller { 
    private something: any; 

    constructor() { this.something = true; } 

    public getSomething(): any { return this.something; } 
} 

試圖單元測試與摩卡這樣的:

import Controller from '../../src/Controller'; 

describe('Controller',() => { 
    let subject: any; 

    beforeEach(() => { 
     subject = new Controller(); // compiler complains here 
    }); 

    describe('getOptions()',() => { 
     it('should get something',() => { 
      let result: any = subject.getOptions(); 
      if (typeof result !== 'object') { 
       throw new Error('Expected object but got ' + result); 
      } 
     }); 
    }); 
}); 

編譯器抱怨:

[TS]不能使用 '新' 與表達式的類型缺少一個調用或構造簽名。

如何獲得Controller類的實例以運行測試?

回答

3

它不起作用,因爲您試圖導入控制器作爲默認導出,而不是。

嘗試:

import {Controller} from '../../src/Controller'; 

或:

export default class Controller { 

你可以閱讀更多有關一般進口here的MDN頁面上。

+0

優秀的,第一個選項的作品!我在哪裏可以讀到默認導出與非默認導出之間的區別? – montrealist

+0

@montrealist我添加了一個答案鏈接以供將來參考。 :) – toskv