2016-07-26 55 views
6

我正在使用Angular2/TypeScript項目並使用jasmine進行單元測試。你如何測試一個函數,使用jasmine + TypeScript調用常量

如何測試一個使用茉莉花常量調用的函數。例如, 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 
    } 
} 

是否有任何其他方式比傳遞常量作爲參數傳遞給toHaveBeenCalledWith方法來測試其他?

+1

你可以用'logo.drawCircle.calls.mostRecent()。args'爲更靈活一點。 – Ioan

+1

你永遠不會在你的測試中調用drawLogo()。那該如何工作? – iberbeu

回答

0

你需要使用一個間諜第一

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

@tymspy那麼,解決方案是什麼?因爲你在剛剛發佈的代碼中做了同樣的操作 – iberbeu

+1

@iberbeu我錯過了像你提到的那樣調用方法。 – tymspy

0

導入RADIUS到您的規範文件,然後

expect(logo.drawCircle).toHaveBeenCalledWith(RADIUS, RADIUS, RADIUS); 
相關問題