0

I want to test async action changes store state correctly.
However, when I make configure store and use store.dispatch, it causes infinite loop and test ends with timeout error.

Here is my code.

import { configureStore } from "@reduxjs/toolkit";
import * as APIs from "../../common/APIs";
import { IRepository, repositoryFactory } from "../../common/Interfaces";
import reposReducer, { fetchRepositories, reposInitialState, toBeLoaded } from "./reposSlice";
import store from "../../app/store";
import authReducer from "../auth/authSlice";

jest.mock("../../common/APIs");
const mockedAPIs = APIs as jest.Mocked<typeof APIs>;

describe("reposSlice", () => {
    const store = configureStore({
        reducer: {
            repos: reposReducer,
        },
    });
    it("Should fetch repositories correctly", (done) => {
        const repository : IRepository = repositoryFactory();
        mockedAPIs.getRepositories.mockResolvedValue([repository]);
        store.dispatch(fetchRepositories("")).then(() => {
            expect(store.getState().repos.repoList.length).toBe(1);
        });
    });
});

I think my async action "fetchRepositories" act well.
Because when I write

console.log(current(state));

inside the builder.addCase, it print correct state.

Thanks.

김진영
  • 11
  • 1

0 Answers0