Тестовые функции Jest, которые определяют в нем переменные

Я хочу написать несколько тестов Jest для функций JavaScript в файле.mjs. В этих функциях переменные определяются путем вызова других функций. Например:

export function getCurrentVideo() {
     var currentVideo = VideoList.GetCurrentVideo()
    console.log(currentVideo);
    return "This is the video:" + currentVideo
}

В этом случае я получу undefined, верно? Потому что VideoList.GetCurrentVideo недоступен.

Тест будет примерно таким:

const  getCurrentVideo  = import('../').getCurrentVideo;

describe('getCurrentVideo', () => {
    test('if getCurrentVideo will return "This is the video:" + currentVideo', () => {
        expect(getCurrentVideo).toBe('This is the video:" + currentVideo');
    });
});

Я знаю, что вы можете добавлять параметры к функции, но это будет означать, что мне придется переписать функции только для целей тестирования. Это не мой код, это огромный проект, где владелец хочет протестировать его.

1 ответ

Вы можете имитировать функцию, если она работает правильно (и тестируйте их отдельно):

const  getCurrentVideo  = import('../').getCurrentVideo;
describe('getCurrentVideo', () => {
    it('if getCurrentVideo will return "This is the video:" + currentVideo', () => {
        const currentVideo = 'testCurrentVideo';
        window.VideoList = {
            GetCurrentVideo: jest.fn(() => currentVideo)
        }
        expect(getCurrentVideo).toBe('This is the video:' + currentVideo);
    });
});

Или вы можете предоставить полный контекст VideoList, чтобы обе функции тестировались вместе.

Другие вопросы по тегам