Javascript 如何将react钩子与Jest和react测试库一起使用

Javascript 如何将react钩子与Jest和react测试库一起使用,javascript,reactjs,antd,react-hooks,react-testing-library,Javascript,Reactjs,Antd,React Hooks,React Testing Library,我在测试使用react钩子的组件时遇到问题。 我需要测试点击一个按钮后,ant design range选择器中的日期范围是否正在更新。对于测试,我使用Jest和react测试库 此时看起来是这样的:(其中一些嵌套组件只是样式化组件:) Parent.jsx: const Parent = () => { const [dateRange, setDateRange] = useState([moment(), moment()]); return ( <div&g

我在测试使用react钩子的组件时遇到问题。 我需要测试点击一个按钮后,ant design range选择器中的日期范围是否正在更新。对于测试,我使用Jest和react测试库

此时看起来是这样的:(其中一些嵌套组件只是样式化组件:)

Parent.jsx:

 const Parent = () => {
  const [dateRange, setDateRange] = useState([moment(), moment()]);
  return (
    <div>
      <Sidebar
        visible={sidebarVisible}
        setSidebarVisible={setSidebarVisible}
        setTableData={setTableData}
        setStatementsLength={setStatementsLength}
        setDateRange={setDateRange}
        dateRange={dateRange}
      />
    </div>
  );
};

export default Parent;
但我得到的是: 钩子只能在函数组件的主体内部调用。 所以我猜我不能在那里使用它。有什么解决办法吗? 如何在测试中指定类似于钩子的
setDateRange
函数

我发现: 但这看起来像是定制挂钩


也许这个测试用例有一个不使用react钩子的解决方案?任何想法都值得高度赞赏。:)

您必须呈现
Parent
,因为它包含更新
DateSelect
的逻辑。这有助于更好的测试,因为您正在测试组件之间的集成是否有效。

哦,这很有意义。但这应该是父测试的一部分还是DateSelect测试的一部分可能是父母。TBH我停止测试组件,我现在测试功能。这对我来说更有意义我是一个乞丐,我需要反应和测试,所以我可能需要一段时间来解决问题,但非常感谢你的帮助:)