2016-07-26 79 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); 
相关问题