У меня есть такой метод (упрощенный)
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
в браузере.
Я использую это, но это выглядит как хакерство.
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;
});
Есть ли правильный способ подделать отсутствие функции браузера?