Reactjs 如何在材质ui的更改事件中测试UseAutomplete钩子

Reactjs 如何在材质ui的更改事件中测试UseAutomplete钩子,reactjs,material-ui,react-testing-library,Reactjs,Material Ui,React Testing Library,这是我获取useAutocomplete钩子用法的代码。我想测试onChange的代码覆盖率。有没有办法通过使用react测试库来实现这一点 const { getRootProps, getInputProps, getListboxProps, getOptionProps, groupedOptions, getClearProps } = useAutocomplete({ id: 'use-autocomplete-demo',

这是我获取useAutocomplete钩子用法的代码。我想测试onChange的代码覆盖率。有没有办法通过使用react测试库来实现这一点

 const {
    getRootProps,
    getInputProps,
    getListboxProps,
    getOptionProps,
    groupedOptions,
    getClearProps
} = useAutocomplete({
    id: 'use-autocomplete-demo',
    options: routeInformation ? routeInformation : [],
    getOptionLabel: (option) => option.routeName,
    clearOnEscape: true,
    disableClearable: false,
    onChange: (event: React.ChangeEvent<{}>, value: any) => {
        if (setPreviousRoute && setSelectedRoute) {
            setPreviousRoute({...selectedRoute} as RouteInformation);
            if ( value ) {
                setSelectedRoute({...value} as RouteInformation);
            } else {
                setSelectedRoute(undefined);
            }
        }
    }
});
const{
getRootProps,
getInputProps,
getListboxProps,
getOptionProps,
分组选项,
getClearProps
}=使用自动完成({
id:“使用自动完成演示”,
选项:路由信息?路由信息:[],
getOptionLabel:(option)=>option.routeName,
clearOnEscape:没错,
可禁用清除:错误,
onChange:(事件:React.ChangeEvent,值:any)=>{
if(setPreviousRoute&&setSelectedRoute){
setPreviousRoute({…selectedRoute}作为路由信息);
如果(值){
将SelectedRoute({…value}设置为路由信息);
}否则{
setSelectedRoute(未定义);
}
}
}
});
我的render元素看起来是这样的,当我从react测试库进行测试时,groupedOptions没有任何数据

<div>
                        <div {...getRootProps()} >
                            <InputBase
                                data-testid="SearchInput"
                                {...getInputProps()}
                                placeholder="Search Route Name"
                                classes={{
                                    root: classes.inputRoot,
                                    input: classes.inputInput,
                                }}
                                endAdornment={
                                    <InputAdornment position="end">
                                        <IconButton  {...getClearProps()}>
                                            <CancelRoundedIcon fontSize="small"/>
                                        </IconButton>
                                    </InputAdornment>
                                }
                                inputProps={{ 'aria-label': 'search' }}
                            />
                        </div>
                        <ul data-testid="SuggestionsList" className={classes.suggestionContainer} {...getListboxProps()}>
                            {groupedOptions.map((option, index) => (
                                <li className={classes.suggestionItem} {...getOptionProps({ option, index })}>
                                    {option.routeName} | ID: {option.routeId}
                                </li>
                            ))}
                        </ul>
                    </div>

    {groupedOptions.map((选项,索引)=>(
  • {option.routeName}ID:{option.routeId}
  • ))}

您找到解决方案了吗?