Vue中的Jest测试

时间:2020-08-26 21:11:10

标签: vue.js jestjs

如何使用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并等待,但是我可能会错误地使用它。

1 个答案:

答案 0 :(得分:0)

很难测试带有副作用的代码,并且您没有提供整个上下文,但是我会尽力提供帮助。

我认为thisthis.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);
})