|
1 | 1 | import { renderHook, waitFor } from "@testing-library/react"; |
2 | 2 | import useFetchData from "./useFetchData"; |
3 | | -import { expect, test, beforeEach, afterEach, vi } from "vitest"; |
| 3 | +import { expect, test, beforeEach, vi } from "vitest"; |
| 4 | +import createFetchMock from "vitest-fetch-mock"; |
| 5 | +const fetchMocker = createFetchMock(vi); |
| 6 | +fetchMocker.enableMocks(); |
| 7 | +const mockData = [{ nm: "vova" }]; |
4 | 8 | beforeEach(() => { |
5 | | - vi.spyOn(global, "fetch").mockResolvedValue({ |
6 | | - json: vi.fn().mockResolvedValue([{ nm: "vova" }]), |
7 | | - }); |
| 9 | + fetchMocker.resetMocks(); |
| 10 | + fetchMocker.mockResponseOnce(JSON.stringify(mockData)); |
8 | 11 | }); |
9 | 12 |
|
10 | | -afterEach(() => { |
11 | | - vi.restoreAllMocks(); |
12 | | -}); |
13 | | -//import { rest } from "msw"; |
14 | | -test("should return error if 'url' params not passed", () => { |
| 13 | +test("should return error when 'url' param not passed", () => { |
15 | 14 | const { result } = renderHook(() => useFetchData()); |
16 | 15 | expect(result.current.error).toBe("must pass url param!"); |
17 | 16 | }); |
18 | | -test("should return loading set to 'true' if 'url' params passed", async () => { |
| 17 | + |
| 18 | +test("should return loading set to 'true' when 'url' param passed", async () => { |
19 | 19 | const { result } = renderHook(() => useFetchData("zzz")); |
20 | 20 | expect(result.current.loading).toBeTruthy(); |
21 | 21 | expect(result.current.error).toBeNull(); |
22 | 22 | expect(result.current.data).toEqual([]); |
23 | | - //await waitForNextUpdate(); |
24 | 23 | }); |
25 | 24 | test("should return data", async () => { |
26 | 25 | const { result } = renderHook(() => useFetchData("zzz")); |
27 | | - |
28 | | - await waitFor(() => expect(result.current.data).toMatchObject([{ nm: "vova" }])); |
29 | | - //expect(result.current.data).toEqual([{ nm: "vova" }]); |
| 26 | + await waitFor(() => expect(result.current.data).toMatchObject(mockData)); |
30 | 27 | }); |
0 commit comments