Jest.js 有没有办法测试这个组件中隐藏的div?

dauxcl2d  于 2023-08-01  发布在  Jest
关注(0)|答案(1)|浏览(134)

我用的是jest和typescript。在我的组件中,有一部分在第一次加载组件时由于usestate而被隐藏。在我们的应用程序中运行函数后,它的状态变为true,隐藏的div变为可见。
我想为这个组件写100%的行覆盖率,但似乎我不能模拟usestate我做错了什么?
以下是最小化的组件(我删除了未使用的部分以使其更具可读性):

  1. import React, { useEffect, useRef, useState, FC } from 'react'
  2. import EmailEditor from 'react-email-editor'
  3. import CustomButton from '../customButton/CustomButton'
  4. type ICustomEmailEditor = {
  5. customClass?: string
  6. setFieldValue?: any
  7. json?: any
  8. jsonTemplate?: string
  9. }
  10. const CustomEmailEditor: FC<ICustomEmailEditor> = (props) => {
  11. const { t } = useTranslation()
  12. const emailEditorRef = useRef(null)
  13. const [isEditorLoading, setIsEditorLoading] = useState<boolean>(true)
  14. const [previewText, setPreviewText] = useState<string>(t('CAMPAIGN.SHOW_PREVIEW'))
  15. const onReady = () => {
  16. emailEditorRef.current.addEventListener('design:updated', async (data: Event) => {
  17. const value: any = await exportHtml('save')
  18. props.setFieldValue('message', value.html)
  19. props.setFieldValue('json_template', JSON.stringify(value.design))
  20. })
  21. setIsEditorLoading(false)
  22. }
  23. return (
  24. <div className="email-container">
  25. {!isEditorLoading ? (
  26. <div className="email-buttons-wrapper">
  27. <CustomButton
  28. type="button"
  29. holder={t('CAMPAIGN.EXPORT_HTML')}
  30. />
  31. <CustomButton type="button" holder={previewText} />
  32. </div>
  33. ) : null}
  34. <EmailEditor ref={emailEditorRef} onReady={onReady} />
  35. </div>
  36. )
  37. }
  38. export default CustomEmailEditor

字符串
电子邮件编辑器是无关紧要的,因为还有其他的行覆盖率测试的其余部分的项目,我正在努力与使用usestate。

zlhcx6iw

zlhcx6iw1#

你可以尝试一个异步测试,在这里你可以await waitFor(() => {getElementsByClassName("email-buttons-wrapper").toBeInTheDocument()})
我记不清具体的语法了,但是react测试文档会对你有所帮助。
如果EmailEditor最终将加载,那么它应该触发onReady函数并显示div。

相关问题