一个简单的测试案例:testClick.js
import React from 'react'
import { Button } from 'antd'
export default function testClick() {
const onClick = () =>{
console.log("2333")
}
return (
<Button onClick={onClick}>testClick</Button>
)
}
testClick.test.js
import React from 'react'
import TestClick from './testClick'
import { render, fireEvent, screen } from '@testing-library/react'
const onClick = jest.fn()
describe('partnerModal UI', () => {
test('partnerModal UI', async () => {
const { findByText } = await render(<TestClick />)
const authEl = await findByText('testClick')
await fireEvent.click(authEl)
expect(onClick).toHaveBeenCalled()
})
})
当我运行这个案例时,我遇到了一个错误,我感到困惑是console.log
已经被调用了,但是on Search没有被调用?为什么?
1条答案
按热度按时间gopyfrb31#
您创建了一个mock
onClick
函数,但没有将其传递给组件并在onClick
函数内部调用它,因此mockonClick
函数没有被调用,这就是原因。此外,检查模拟函数是否被调用是测试实现细节,这不是推荐的测试策略。
推荐的测试策略是测试组件的行为,当
click
事件发生时,组件的某些状态可能会改变,您应该检查状态改变后组件呈现了什么。但是你提供的代码,
onClick
什么都没有做,只是调用console.log
打印一个字符串,代码没有太大的实际意义,你唯一能做的就是Assertconsole.log
是否被调用。