gpt4 book ai didi

javascript - 使用 Jest 监视链式方法调用不起作用

转载 作者:行者123 更新时间:2023-11-30 14:26:26 25 4
gpt4 key购买 nike

我制作了我自己的自定义 TextInput 组件,该组件采用 nextField 属性。当我的 TextInput 中的“完成”按钮被按下时,nextField 应该被聚焦。很简单。它在生产中有效。

但是,我在测试关注 nextField 的代码行时遇到了问题:

this.props.nextField && this.props.nextField().focus()

我正在使用这个 spy 测试它:

const nextFieldSpy = jest.fn(() => {return {focus: jest.fn()}})

据我了解,当被测代码行被触发时,我应该看到 nextFieldSpynextFieldSpy().focus 都被调用了。

然而,事实并非如此。以下是 Jest 的期望:

期望(nextFieldSpy).toHaveBeenCalledTimes(1)期待(nextFieldSpy().focus).toHaveBeenCalledTimes(1)

这就是我遇到的错误——第一行通过,但第二行失败。

 Expected mock function to have been called one time, but it was called zero times.

72 | expect(nextFieldSpy).toHaveBeenCalledTimes(1)
> 73 | expect(nextFieldSpy().focus).toHaveBeenCalledTimes(1)

这是怎么回事?

最佳答案

nextFieldSpy() 每次调用都会返回一个新对象。

更改创建 nextFieldSpy 的方式以始终返回相同的对象:

const nextFieldResult = {focus: jest.fn()};
const nextFieldSpy = jest.fn(() => nextFieldResult);

关于javascript - 使用 Jest 监视链式方法调用不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51869381/

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