[英]How can I test this function with Jest?
我正在尝试对打字机功能进行单元测试,但无论我做什么,收到的值都是未定义的。
我看过 Jest 文档,我也尝试过异步但没有运气。
let speed = 120;
function typeWriter(id, text) {
return function () {
if (text) {
document.getElementById(id).innerHTML += text[0];
setTimeout(typeWriter(id, text.slice(1)), speed);
}
};
}
typeWriter("job-title", "Web Developer")();
我期望 ID 为 job-title 的元素的 innerHTML 值是 Web Developer 而不是 undefined。
你需要像这样使用Jest
Timer Mocks :
let speed = 120;
function typeWriter(id, text) {
return function () {
if (text) {
document.getElementById(id).innerHTML += text[0];
setTimeout(typeWriter(id, text.slice(1)), speed);
}
};
}
describe('typeWriter', () => {
beforeEach(() => { jest.useFakeTimers(); });
afterEach(() => { jest.useRealTimers(); });
it('should work', () => {
document.body.innerHTML = '<div><span id="job-title"></span></div>';
const text = "Web Developer";
typeWriter("job-title", text)();
for (let i = 1; i <= text.length; i++) {
expect(document.getElementById('job-title').innerHTML).toBe(text.substring(0, i));
jest.advanceTimersByTime(speed);
}
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.