我正在为 React 组件编写测试。这是一个计时器,当你按下一个按钮时开始倒计时,然后当你按下同一个按钮时停止。我有一个测试用例试图按下暂停按钮,等待一秒钟,然后再次按下暂停按钮,检查计时器以确保一秒钟已经过去:
Timer.test.js
render(<Timer />)
const pauseButton = screen.getByText('pause')
const timerOutput = screen.getAllByRole('heading')[1]
describe('Timer', () => {
test('Timer starts counting down when unpaused', done => {
function fetchTime(callback) {
fireEvent.click(pauseButton)
setTimeout(
fireEvent.click(pauseButton),
1250
)
return callback(timerOutput)
}
function callback(data) {
try {
expect(data).toHaveTextContent('24:59')
done()
} catch(error) {
done(error)
}
}
fetchTime(callback)
})
})
问题是,测试似乎没有按pauseButton
我想要的方式点击。当我运行我的测试时,Jest 在终端告诉我,timerOutput
结果是'25:00'
而不是'24:59'
,并且似乎组件未能通过测试。但这是测试的问题,而不是组件的问题;当我在浏览器中运行应用程序并自己按下按钮时,它会按应有的方式工作。如何让这个测试正常工作,并按我想要的方式点击按钮?