2017-05-30 2 views
0

Ich arbeite gerade an einer Angular4 Web-Anwendung und ich versuche, einen Komponententest für eine Klasse und Pipes zu schreiben, die nur öffentliche statische Methoden haben. Inzwischen habe ich keine Lösung dafür gefunden. Alles, was für Komponenten, Service usw. funktioniert, funktioniert hier nicht.Wie man eine statische Methode der Klasse aufruft?

Beispiel: Klasse

export class StringExtensions { 
    public static firstToLowerCase = (argument: string): string => { 
     return `${ argument.substr(0, 1).toLowerCase() }${ argument.substr(1) }`; 
    } 
} 

Beispiel: nicht Unittest arbeiten

import {StringExtensions} from './string-extensions'; 

describe('StringExtensions',() => { 

    let classStringExtensions: StringExtensions; 
    const argument: string = 'ArgumenTas'; 

    beforeEach(() => { 
     classStringExtensions = new StringExtensions(); 
    }); 

    afterEach(() => { 
     classStringExtensions = null; 
    }); 

    it('should ...',() => { 
     expect(classStringExtensions.firstToLowerCase(argument)).toBe('argumenTas'); 
    }); 

}); 

Errormessage:

ERROR in .../string-extensions.spec.ts (17,38): 
Property 'firstToLowerCase' does not exist on type 'StringExtensions'. 

Antwort

1

Es ist, weil Sie die statische Methode auf einer Instanz aufrufen, müssen Sie Rufen Sie den Typ auf, da auf Typebene auf statische Member zugegriffen wird.

expect(StringExtensions.firstToLowerCase(argument)).toBe('argumenTas'); 

Der aktuelle Code innerhalb der von beforeEach und afterEach ist auch nicht notwendig.

Diese Frage bezieht sich allgemein auf Typoskripte und nicht auf ein Framework.

+0

Vielen Dank! Jetzt weiß ich die Antwort, es scheint offensichtlich ... –

+0

@JessicaM. - froh, dass ich Helfen kann. Bitte erwägen Sie, es als Antwort zu markieren, indem Sie das Häkchen auf der linken Seite der Antwort verwenden. – Igor

Verwandte Themen