如何使用Jest Test来测试此方法:
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/4.5.1/d3.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3-hierarchy/1.1.1/d3-hierarchy.min.js"></script>
我曾尝试使用Async并等待,但是我可能会错误地使用它。
答案 0 :(得分:0)
很难测试带有副作用的代码,并且您没有提供整个上下文,但是我会尽力提供帮助。
我认为this
内this.fetchData()
中的setTimeout
引用了delayedFetch
方法本身。 (就我如何使用vue.js而言,我不知道这是您的意图。
但是无论如何,您可以在link to jest doc
处找到如何测试setTimeouts的方法这是一个简单的实现
const someObj = {
// I assume the delayedFetch is some method of an object
fetchData() {
return "some-data";
},
delayedFetch() {
const vue = this;
setTimeout(() => {
vue.fetchData();
}, 1000);
}
}
jest.useFakeTimers();
test("delayedFetchTest", () => {
someObj.delayedFetch();
expect(setTimeout).toHaveBeenCalledTimes(1);
expect(setTimeout).toHaveBeenLastCalledWith(expect.any(Function), 1000);
})