2016-07-26 12 views
6

Ich arbeite an einem Angular2/TypeScript-Projekt und Jasmin für Komponententests verwenden.Wie testen Sie eine Funktion, die mit einer Konstante aufgerufen wird mit Jasmine + TypeScript

So testen Sie eine Funktion, die mit einer Konstante mit Jasmin aufgerufen wird. Eg. Logo.ts

export const RADIUS: number = 10; 

export class Logo { 
    ... 
    protected drawCircle(x: number, y: number, r: number){...} 

    protected drawLogo(){ 
    this.drawCircle(RADIUS, RADIUS, RADIUS); 
    } 
    ... 
} 

Logo.spec.ts

describe('drawLogo', function() { 
    beforeEach(() => { 
    spyOn(logo, 'drawCircle'); 
    } 
    it('should call drawCircle method with parameters'){ 
    expect(logo.drawCircle).toHaveBeenCalledWith(10, 10, 10); //This fails 
    } 
} 

Gibt es eine andere Art und Weise andere zu testen, als die Konstante als Parameter toHaveBeenCalledWith Methode übergeben?

+1

Sie können 'logo.drawCircle.calls.mostRecent(). Args' für ein bisschen mehr Flexibilität. – Ioan

+1

Sie nie DrawLogo() in Ihrem Test aufrufen. Wie soll das dann funktionieren? – iberbeu

Antwort

0

Sie benötigen einen Spion verwenden ersten

spyOn('logo','drawCircle'); 
logo.drawLogo(); 
expect(logo.drawCircle).toHaveBeenCalledWith(10, 10, 10); 
+0

@tymspy also, was ist die Lösung? weil du das gleiche in dem Code getan hast, den du gerade gepostet hast – iberbeu

+1

@ibebeu habe ich verpasst, die Methode zu nennen, wie du erwähntest. – tymspy

0

importieren Sie den RADIUS Spec-Datei und dann

expect(logo.drawCircle).toHaveBeenCalledWith(RADIUS, RADIUS, RADIUS);