Mic*_*ael 4 reactjs jestjs react-testing-library react-query msw
我有一个页面,其中加载了一个下拉组件。该组件调用一个自定义钩子,该钩子使用反应查询来获取要在下拉列表中显示的数据。初始加载时,该组件处于加载状态并呈现加载图标。当react-query成功完成调用时,组件将数据列表呈现到下拉列表中。
const SelectItem = ({ handleSelectChange, selectedItem }) => {
const { data, status } = useGetData(url, 'myQueryKey');
if (status === 'loading') {
return <RenderSkeleton />;
}
if (status === 'error') {
return 'An Error has occured';
}
return (
<>
<Autocomplete
options={data}
getOptionLabel={(option) => `${option.name}`}
value={selectedItem}
onChange={(event, newValue) => {
handleSelectChange(newValue);
}}
data-testid="select-data"
renderInput={(params) => <TextField {...params}" />}
/>
</>
);
};
Run Code Online (Sandbox Code Playgroud)
我如何正确测试这个?即使在实现 msw 来模拟响应数据之后,我的测试也仅呈现骨架组件。所以我假设它基本上只等待“isLoading”状态。
it('should load A Selectbox data', async () => {
render(
<QueryClientProvider client={queryClient}>
<SelectItem />
</QueryClientProvider>
);
expect(await screen.getByTestId('select-data')).toBeInTheDocument()
});
Run Code Online (Sandbox Code Playgroud)
请注意,我还实现了 msw 模拟服务器和处理程序来模拟它应该返回的数据。顺便说一句,在使用反应查询之前它就像一个魅力,所以我想我正在监督一些事情。
谢谢你!
尝试使用findByText(将等待 DOM 元素,返回 a Promise)
expect(await screen.findByText('select-data')).toBeInTheDocument();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4371 次 |
| 最近记录: |