Функция Jest-тестирования, вызывающая eval - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть проект Vue TS, созданный с помощью vue-cli 3.0.

Я протестирую эту функцию:

public hopJavascript(url: string) {
    eval(url);
}

И это моя тестовая функция с использованием Jest Framework:

test('navigation using javascript', () => {
    const url = "someurl";
    hopJavascript(url);
    
    expect(eval).toBeCalled();
});

Теперь я получаю это сообщение, проверка неудачного ведения журнала консоли , которая говорит мне, что мне нужна поддельная версия eval.

Как я могу издеваться над Эвалом ?

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Вы должны отслеживать свою функцию с помощью spyOn ().

Это решение должно работать для вас.

import MyClass from '../MyClass';

test('navigation using javascript', () => {
    const url = "someurl";
    const spy = jest.spyOn(MyClass, 'eval');

    MyClass.hopJavascript(url);

    expect(spy).toHaveBeenCalled();
});
0 голосов
/ 29 ноября 2018

Обновление

Кажется, вы не всегда можете переопределить eval в зависимости от среды JS (браузер или узел).См. Ответ на «Как переопределить функцию eval в javascript?» для получения дополнительной информации

Оригинальный ответ

Я думаю, вы можете переопределитьeval в вашем тестовом файле:

global.eval = jest.fn()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...