我有一个这样的方法(简化)
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;
});
有没有正确的方法来伪造浏览器功能的不存在?