2016-12-07 2 views
2

Ich habe etwas älteren Code Ich möchte Unit-Tests starten. Es ist eine Klasse wie folgt:Erhalten Sie eine Instanz der TypeScript-Klasse?

export class Controller { 
    private something: any; 

    constructor() { this.something = true; } 

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

Der Versuch, Unit-Test mit Mokka wie folgt aus:

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); 
      } 
     }); 
    }); 
}); 

Compiler beklagt:

[ts] Kann nicht verwenden 'neuen' mit ein Ausdruck, dessen Typ einen Aufruf oder Konstruktsignatur fehlt.

Wie bekomme ich eine Instanz der Klasse Controller, um Tests durchzuführen?

Antwort

3

Es funktioniert nicht, weil Sie versuchen, Controller als einen Standardexport zu importieren, während es nicht ist.

Versuchen:

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

oder:

export default class Controller { 

Sie können here mehr über die Einfuhren im Allgemeinen auf der MDN Seite lesen.

+0

Ausgezeichnet, erste Option funktioniert! Wo kann ich den Unterschied zwischen einem Standard- und einem nicht standardmäßigen Export nachlesen? – montrealist

+0

@montrealist Ich habe einen Link zu der Antwort für zukünftige Referenz hinzugefügt. :) – toskv

Verwandte Themen