2016-12-07 5 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 { 

あなたはMDNページhere上の一般的な輸入についての詳細を読むことができます。

+0

優秀な、最初のオプションが動作します!デフォルトと非デフォルトのエクスポートの違いはどこで確認できますか? – montrealist

+0

@montrealist私は将来の参考のために答えへのリンクを追加しました。 :) – toskv

関連する問題