gpt4 book ai didi

javascript - 用 Jest 检查传递的函数作为 prop

转载 作者:行者123 更新时间:2023-12-03 00:13:16 26 4
gpt4 key购买 nike

react-dates 构建一个组件,我有这样的东西:

<DayPickerRangeController
// some props...
isDayBlocked={day => isDayBlocked(a, someObject)}
/>

我想测试我是否正确传递 day => isDayBlocked(a, someObject) 形式的函数。

所以在我的测试中我有:

import isDayBlocked from './isDayBlocked'

jest.mock('./isDayBlocked', () => () => {})

然后进行测试:

expect(wrapper.find(DayPickerRangeController).props().isDayBlocked).toBe(
() => isDayBlocked,
);

但我收到:

expect(received).toBe(expected) // Object.is equality

Expected: [Function anonymous]
Received: [Function isDayBlocked]

怎样才能让测试通过?

最佳答案

您正在尝试匹配函数的主体。这是行不通的。您可以比较 .toString() 结果,但可以肯定的是,这并不意味着相同的正文文本意味着相同的执行(因为使用了闭包/全局变量)。

那么你能做什么呢?

您可以像测试任何其他函数一样测试传入的函数:提供不同的输入并对输出进行断言。

wrapper.callSomethingToChangeState();
expect(wrapper.find(DayPickerRangeController).props().isDayBlocked('day1'))
.toBeFalsy();
expect(wrapper.find(DayPickerRangeController).props().isDayBlocked('day2'))
.toBeFalsy();
expect(wrapper.find(DayPickerRangeController).props().isDayBlocked('day3'))
.toBeTruthy();

如果您的 isDayBlocked 取决于组件的某些内部状态,您可能需要编写几个不同的 it() 来覆盖不同的输入数据类

关于javascript - 用 Jest 检查传递的函数作为 prop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54628152/

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