gpt4 book ai didi

javascript - 用 Jest 模拟第 3 方库构造函数

转载 作者:搜寻专家 更新时间:2023-10-30 21:10:22 24 4
gpt4 key购买 nike

我正在用 jest 编写单元测试,我必须测试一个从 3rd 方库调用构造函数的函数(测试的目标是检查调用是否使用正确的参数

第三个 patry 库是 Popper.js

我做了一个 jest.spyOn(Popper.prototype, 'constructor').mockImplementation( () => {}) 但是它抛出了来自构造函数内部的错误(因此它不是被调用的模拟函数)

这是我的测试代码

  import Popper from 'popper.js';

it('should call Popper constructor with correct argument', () => {
// Arrange
jest.mockImplementation(Popper.prototype, 'constructor', () => {});
const refElem = document.createElement('div');
const popElem = document.createElement('div');
const placement = 'top';
const container = document.createElement('div');

// Act
popup.create(refElem, popElem, placement, container);

// Assert
expect(Popper.prototype.constructor).toHaveBeenCalled();

});

最佳答案

我终于设法解决了这个问题。我已经手动创建了一个模拟模块(因为 jest.genmockfromModule 似乎不起作用)

jest.mock ('popper.js', () =>
{
class Popper {
constructor(a,b,c){
this.spy(a,b,c);
}
spy(a,b,c) {}
destroy() {}
}
return Popper;
});

spy 函数是当您想知道是否已使用正确参数调用构造函数时可以“监视”的函数

(由于 popper.js,这里有 3 个参数)

因此我在我的规范文件中像这样使用它:

import Popper from 'popper.js';
...
jest.spyOn(Popper.prototype, 'spy');

关于javascript - 用 Jest 模拟第 3 方库构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47393901/

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