reactjs - TypeError:无法读取未定义测试库 + Jest 的属性“关闭”
问题描述
我创建了一个组件,它有两个按钮和它们各自的 Chakra UI 点击事件。
所以我创建了一个简单的测试,想法是生成快照然后点击事件,但是出现以下错误。
TypeError: Cannot read property 'off' of undefined
在那种情况下,我应该做一个模拟还是什么?如果是,会怎样?
组件
export const Buttons = ({children}: ButtonsProps) => {
const {flag, setFlag} = useContext(Local.ContextCalculator)
const {t} = useTranslation('comp_calculator')
return (
<>
<C.Stack
spacing={2}
direction={'row'}
align={'center'}
justify={'center'}
>
<C.Button variant={'ghost'} size={'lg'} onClick={setFlag.off}>
{t('buttons.clear')}
</C.Button>
<C.Button
type={'submit'}
colorScheme={'primary'}
size={'lg'}
onClick={setFlag.on}
>
{t('buttons.calculate')}
</C.Button>
</C.Stack>
{flag && (
<C.Stack spacing={8} data-testid={'result-table-calculator'}>
{children}
</C.Stack>
)}
</>
)
}
测试
describe('Buttons', () => {
const {Buttons} = jest.requireActual(
'../../../src/components/calculator/Buttons'
)
afterEach(() => {
Lib.resetAll()
})
it('renders as expect', async () => {
const view = Lib.render(<Buttons />)
expect(view.asFragment()).toMatchSnapshot()
Lib.fireEvent.click(Lib.screen.getByText(/buttons\.calculate/i))
await Lib.screen.findByTestId('result-table-calculator')
Lib.fireEvent.click(Lib.screen.getByText(/buttons\.clear/i))
expect(
Lib.screen.queryByTestId('result-table-calculator')
).not.toBeInTheDocument()
})
})
解决方案
推荐阅读
- autodesk-forge - Forge viewer 在以编程方式激活后停用 BimWalk
- python - 通过 python Beautiful Soup 从网页中抓取 tab href 值
- python - 定位并单击,另一幅图像中的一部分图像
- c - 通过与边缘交换最大值和最小值来组织表格的程序(一直这样做直到完成)
- python - The view polls.views.vote didn't return an HttpResponse object. It returned None instead
- android - Android 的主屏幕是在前台运行的实体吗?
- reactjs - 使用身份验证和用户上下文反应路由
- c - Switch Case 在 C 中由自身触发
- php - 自定义标题正在被剥离
- docker - Nifi - SSLError CertificateError - 主机名'dev.example.com'与'nifi-node1'不匹配