gpt4 book ai didi

reactjs - 带有 React 测试库的测试输入搜索框

转载 作者:行者123 更新时间:2023-12-03 23:43:27 27 4
gpt4 key购买 nike

我有一个 SearchBox 组件:

    function SearchBox({ search, setSearch }) {
return (
<div>
<div>
<input onChange={e => setSearch(e.target.value)} type="text" placeholder="Search..." value={search} />
</div>
</div>
)
}
我尝试了以下方法:
    describe('Input value', () => {
it('updates on change', () => {
const { queryByPlaceholderText } = render(<SearchBox />)

const searchInput = queryByPlaceholderText('Search...')

fireEvent.change(searchInput, { target: { value: 'test' } })

expect(searchInput.value).toBe('test')
})
})
但后来我收到一个错误:

Error: Uncaught [TypeError: setSearch is not a function]


我如何以及如何在此 SearchBox 组件上进行测试?

最佳答案

问题是setSearch没有提供 Prop 。setSearch可以由 jest 模拟功能提供。

const setSearch = jest.fn((value) => {})
const { queryByPlaceholderText } = render(<SearchBox setSearch={setSearch}/>)
完整的测试代码片段:
import React from 'react'
import { render, fireEvent } from '@testing-library/react'
import SearchBox from './SearchBox'
import '@testing-library/jest-dom/extend-expect'

describe('Input value', () => {
it('updates on change', () => {
const setSearch = jest.fn((value) => {})

const { queryByPlaceholderText } = render(<SearchBox setSearch={setSearch}/>)

const searchInput = queryByPlaceholderText('Search...')

fireEvent.change(searchInput, { target: { value: 'test' } })

expect(searchInput.value).toBe('test')
})
})

关于reactjs - 带有 React 测试库的测试输入搜索框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64342544/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com