如果浏览器功能不可用,如何对路径进行单元测试

时间:2018-10-03 10:06:48

标签: angular unit-testing karma-runner

我有一个这样的方法(简化)

useMathLog(number){
    if(Math.log10){
        return Math.log10(number);
     } else (){
        console.warn("there is not Math.log10");
        return (Math.log(number) / Math.LN10));
     }
}

,并且我想测试else的路径,但不确定在浏览器中伪造Math.log10 inexistence (?)的正确方法。

我正在使用它,但感觉有点黑。

it('should use Math.log / Math.LN10 when no Math.log 10 is available and return 0 when value is 1', () => {
    let value = 1; 
    let mathLog10 = Math.log10;

    Math.log10 = null;
    console.log(Math.log10); // this is null
    spyOn(console, 'warn');
    expect(myService.useMathLog(value)).toBe(0);
    expect(console.warn).toHaveBeenCalled();

    Math.log10 = mathLog10;
});

有没有正确的方法来伪造浏览器功能的不存在?

0 个答案:

没有答案