Skip to content

Commit 71f80a6

Browse files
committed
test: use fetchMocker at tests
1 parent 3fcc25d commit 71f80a6

File tree

3 files changed

+26
-15
lines changed

3 files changed

+26
-15
lines changed

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@
3434
"vite": "^5.0.0",
3535
"vite-plugin-svgr": "^4.0.0",
3636
"vite-tsconfig-paths": "^5.0.0",
37-
"vitest": "^2.0.0"
37+
"vitest": "^2.0.0",
38+
"vitest-fetch-mock": "^0.4.5"
3839
},
3940
"type": "module",
4041
"scripts": {

pnpm-lock.yaml

Lines changed: 13 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/useFetchData.test.js

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,27 @@
11
import { renderHook, waitFor } from "@testing-library/react";
22
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" }];
48
beforeEach(() => {
5-
vi.spyOn(global, "fetch").mockResolvedValue({
6-
json: vi.fn().mockResolvedValue([{ nm: "vova" }]),
7-
});
9+
fetchMocker.resetMocks();
10+
fetchMocker.mockResponseOnce(JSON.stringify(mockData));
811
});
912

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", () => {
1514
const { result } = renderHook(() => useFetchData());
1615
expect(result.current.error).toBe("must pass url param!");
1716
});
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 () => {
1919
const { result } = renderHook(() => useFetchData("zzz"));
2020
expect(result.current.loading).toBeTruthy();
2121
expect(result.current.error).toBeNull();
2222
expect(result.current.data).toEqual([]);
23-
//await waitForNextUpdate();
2423
});
2524
test("should return data", async () => {
2625
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));
3027
});

0 commit comments

Comments
 (0)