我如何使用 Jest 来测试无状态组件中的函数?

How can i use Jest to test a function inside a stateless component?

我需要在我的无状态组件中测试一个函数作为下面的源代码:

function App(props) {
  const handleItemClick = () => {
    if (true) {
      props.doanything();
    }
  }

  return (
    <div onClick={handleItemClick}>
      App
    </div>
  );
}

您不应该测试内部(私有)项目,测试内部实现被认为是不好的做法,相反,尝试模拟用户与您的组件的交互。 在你的例子中模拟 click on the div.

如果您正在使用 Enzyme,您可以通过 wrapper.find 获取 div,然后 div.simulate('click')

我有一个常用的句子,"If it is hard to test you probably trying to test something wrong"。

如建议的那样 - 如果您可以通过模拟用户点击来简单地测试您的功能,那么请采用该方法。但是,说测试内部实现是 'bad practice' 是无益且不切实际的。

直接测试功能仍然很有必要。特别是当你的组件很复杂,有几个嵌套组件在你想测试的函数可以是 运行.

之前对服务器进行异步调用

在这种情况下 - 您有两个选择,据我所知:

  1. 将函数移出功能组件范围,导出并测试它(注意,您可能需要传入相当多的道具,这样看起来会很难看)
  2. 使用 class 组件。这样就可以直接引用函数了。

我希望有更好的,希望有人能在评论中提出建议。