gpt4 book ai didi

javascript - 使用 Jest 和 Sinon 的 React 测试函数调用不起作用

转载 作者:行者123 更新时间:2023-11-28 20:50:45 25 4
gpt4 key购买 nike

我正在尝试断言我的 React 类方法在事件发生后被调用的次数。我试过使用 sinon.spy 和 jest.fn() 无济于事。

使用 sinon.spy:

test('Some test', (done) => {
const page = renderLookupPage();
const formInputButton = page.find('.button').first();
formInputButton.simulate('click');

let spy = sinon.spy(page.instance().myReactMethod);

const button = page.find('.tag').first();
button.simulate('click');

setTimeout(() => {
try {
console.log(spy.callCount); //0
done();
} catch (error) {
done.fail(error);
}
}, 100);
});

用 jest.fn():

test('Some test', (done) => {
const page = renderLookupPage();
const formInputButton = page.find('.button').first();
formInputButton.simulate('click');

page.instance().myReactMethod = jest.fn(() => {});

const button = page.find('.tag').first();
button.simulate('click');

setTimeout(() => {
try {
console.log(page.instance().myReactMethod.mock.calls.length); //0
done();
} catch (error) {
done.fail(error);
}
}, 100);
});

我确信所讨论的方法肯定会被调用。更令人困惑的是在

之前打印的方法中的 console.log 语句

console.log(spy.callCount)

任何正确方向的指示将不胜感激!干杯!

最佳答案

解决方案很简单,

我移动了线

page.instance().myReactMethod = jest.fn(() => {});

在上一行之上:

formInputButton.simulate('click');

不确定为什么会这样,很高兴听到有人说为什么这会影响结果?

注意:formInputButton 不调用有问题的函数

关于javascript - 使用 Jest 和 Sinon 的 React 测试函数调用不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48286373/

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