gpt4 book ai didi

javascript - 我如何用 Jest 测试这个功能?

转载 作者:行者123 更新时间:2023-11-29 23:00:55 25 4
gpt4 key购买 nike

我正在尝试对打字机功能进行单元测试,但无论我做什么,收到的值都是未定义的。

我看过 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);
}
});
});

关于javascript - 我如何用 Jest 测试这个功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55683250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com