首页 > 解决方案 > 如果回调没有作为道具传递,我如何使用 jest 检查对子组件的点击?

问题描述

我有以下组件:

  <MaxFrContainer data-test="wellness-report-card">
      <PrimaryBlueButton
       onClick={() => {
        // open popup
        }}
       >
        generate
      </PrimaryBlueButton>
  </MaxFrContainer>

Jest 抱怨onClick呼叫没有经过测试,但我该如何测试呢?无论他的回调是什么,它都是在组件中定义的,而不是作为道具传递下来的。此外,类似的事情在我的代码中重复出现。有时它会打开一个弹出窗口,有时它会进行 API 调用。

我如何得到这些测试

标签: javascriptreactjsunit-testingjestjsenzyme

解决方案


你能更具体地说明你在做什么//open popup吗?

如果我要创建这样的组件,应该有一个带有业务逻辑的单独模块,并且在 onClick 处理程序中我应该只从这个模块调用一些方法。

<MaxFrContainer data-test="wellness-report-card">
      <PrimaryBlueButton
       onClick={() => MaxFrContainerController.clickHandler()}
       >
        generate
      </PrimaryBlueButton>
  </MaxFrContainer>

并且要测试 onClick 你应该只检查clickHandlermockMaxFrContainerController是否被调用。


推荐阅读