Saya mulai menulis tes untuk aplikasi saya. Saya mencoba membuat tes untuk pembuat redux async.

Masalahnya adalah ketika saya menjalankan tes saya mendapatkan kesalahan berikut:

Ambil semua pengguna kirim tindakan loadUsersSuccess

Tindakan tidak boleh memiliki properti "jenis" yang tidak ditentukan. Apakah Anda salah mengeja konstanta? Tindakan: tidak ditentukan

Semua tindakan telah mendefinisikan konstanta tipe jadi saya tidak mengerti apa yang seharusnya menjadi masalah.

const LOAD_ALL_USERS_SUCCESS = "src/containers/User/LOAD_ALL_USERS_SUCCESS";
const LOAD_ALL_USERS_FAILURE = "src/containers/User/LOAD_ALL_USERS_FAILURE";

//action creators
    export function loadUsersSuccess(users) {
      return {
        type: LOAD_ALL_USERS_SUCCESS,
        payload: users
      };
    }

    export function loadUsersFailure(error) {
      return {
        type: LOAD_ALL_USERS_FAILURE,
        payload: error
      };
    }

import nock from "nock";
import { loadUsersSuccess, loadUsersFailure } from "./ducks";
import configureStore from "redux-mock-store";

const middlewares = [];

const mockStore = configureStore(middlewares);

const LOAD_ALL_USERS_SUCCESS = "src/containers/User/LOAD_ALL_USERS_SUCCESS";
const LOAD_ALL_USERS_FAILURE = "src/containers/User/LOAD_ALL_USERS_FAILURE";

const users = [
  {
    first_name: "Emlynne",
    last_name: "Spellacy",
    email: "espellacy0@lycos.com",
    gender: "Female",
    age: 1965,
    country: "Indonesia"
  },
  {
    first_name: "Alie",
    last_name: "Dalrymple",
    email: "adalrymple1@telegraph.co.uk",
    gender: "Female",
    age: 1976,
    country: "Pakistan"
  }
];

function fetchData() {
  return async (dispatch) => {
    try {
      const { data } = await axios.get("/users");
      dispatch(loadUsersSuccess(data));
    } catch (error) {
      dispatch(loadUsersFailure(error));
    }
  };
}

describe("Fetch all users", () => {
  afterEach(() => {
    nock.cleanAll()
  })
  test("Should load all Users", () => {
    nock("http://localhost:8000")
      .get("api/users")
      .reply(200, users);

    const expectedAction = [
      {
        type: LOAD_ALL_USERS_SUCCESS,
        payload: users
      },
      {
        type: LOAD_ALL_USERS_FAILURE,
        payload: "error"
      }
    ];
    const store = mockStore({});

    return store.dispatch(fetchData()).then(() => {
      expect(store.getActions()).toEqual(expectedAction);
    });
  });
});
0
Morten 14 November 2017, 14:48

1 menjawab

Jawaban Terbaik

Masalahnya adalah bahwa fungsi pengiriman tidak ada. Jadi, saya perlu menambahkan baris berikut.

import thunk from "redux-thunk";

const middlewares = [thunk];
1
Morten 22 November 2017, 20:51