Тестовые функции 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, чтобы обе функции тестировались вместе.