[英]React unit testing, JEST + axios mock problem
我在使用 JEST 和 Axios 进行单元测试时遇到问题。 模拟不起作用,我在单元测试期间没有获得数据。 我不知道为什么会这样。 我唯一的想法是,自从我使用 axios.client.get 以来,我以错误的方式嘲笑它?
测试:
jest.mock("axios");
const mockedAxios = axios as jest.Mocked<typeof axios>;
describe("Test of products fetch", () => {
test("render products", async () => {
mockedAxios.get.mockResolvedValueOnce({
title: "product",
description: "description",
_id: "123",
imageData: "",
price: "15",
});
render(
<ReduxProvider>
<Products />
</ReduxProvider>,
);
const productsList = await screen.findAllByRole("a");
expect(productsList).toBeGreaterThan(0);
expect(productsList).toBeLessThan(10);
});
});
零件
useEffect(() => {
const getProducts = async (): Promise<void> => {
const prods = await getProducts(actualPage);
setProducts(prods);
};
getProducts();
}, [actualPage]);
<Fragment>
{products.map((product) => (
<ProductItem
key={product.title}
title={product.title}
imageData={decodeBase64(product.imageData)}
price={product.price}
id={product._id}
/>
))}
</Fragment>
api调用
export async function getProducts(pageNum: number): Promise<IProduct[]> {
const response = await productsClient.get<IProduct[]>(
`/get-products?page=${pageNum}`,
);
const data = response.data;
return data;
}
错误: const response = await productsClient.get<IProduct[]>( Cannot read properties of undefined (reading 'get')
我有一个类似的问题,并以这种方式实现模拟
mockAxios.get.mockImplementation((url) => {
switch (url) {
case '/product/123':
return Promise.resolve({
title: "product",
description: "description",
_id: "123",
imageData: "",
price: "15",
});
case '/product/124':
return Promise.resolve({
title: "product",
description: "description",
_id: "124",
imageData: "",
price: "145",
});
default:
return Promise.reject(new Error(`product not found`));
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.