开玩笑在窗口中测试一个类

时间:2020-02-11 10:30:33

标签: reactjs jestjs

我超级迷路了。

我们在Loqate的窗口中有一个名为window.pca.Addresses的类

然后在我们的代码中,我们在react方法中运行以下代码段:

const shippingControl = new pca.Address(shippingFields, { key: process.env.LOQATE_API_KEY });
window.setTimeout(() => {
  shippingControl.load();
}, 3000);

我的问题是如何编写一个开玩笑的测试来模拟窗口中的Address类,然后还添加load()方法,以便我们可以测试它是否被触发。

我试图窥探作为全局对象和窗口对象的window对象,并使用jest.mock()对其进行模拟,但该方法也没有用。

我想知道是否有人可以指导我如何做?

非常感谢

1 个答案:

答案 0 :(得分:0)

您可以将beforeEach添加到测试中,如下所示:

 beforeEach(() => {
    Object.defineProperty(window, "pca", {
      value: {
        Addresses: { load: jest.fn(() => null) }    
      },
      writable: true
    });
  });

您可以像这样测试它是否被触发:

expect(window.pca.Addresses.load).toHaveBeenCalledTimes(1);