Как выполнить модульное тестирование пути, если функция браузера недоступна - PullRequest
0 голосов
/ 03 октября 2018

У меня есть такой метод (упрощенный)

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;
});

Есть ли правильный способ подделать отсутствие функции браузера?

...