Тестирование действия asyn c redux в случае сбоя - PullRequest
0 голосов
/ 25 мая 2020

Я проверил в успешном случае. Но у меня проблемы с ошибкой.

Это мое действие

const register = (user) => async (dispatch) => {
  try {
    dispatch(registerRequest());
    const response = await userService.register(user);

    dispatch(registerSuccess(response.data));
    history.push("/");
  } catch (err) {

    dispatch(registerFailure());
    dispatch(errorActions.setErrors(err));
  }
};

Сервисный файл

const register = async (user) => {
  const response = await axios.post(`${API_AUTH}/register`, user);
  return response;
};

Мой тестовый файл выглядит так, как показано ниже. У меня также есть пользовательская служба, которую я называю вызовом api. Я использую эту услугу в своем действии

    describe("async actions", () => {
      const user = {
        name: "ogulcan133",
        password: "133131",
        email: "kara@gmail.com",
      };
      let response;
      beforeEach(() => {
        moxios.install();
      });

      afterEach(() => {
        moxios.uninstall();
      });


      it("creates registerRequest and registerFailure when user register has been done with fail", () => {
        response = new Error("Request failed with status code 500");
        const store = makeMockStore();

        const expectedActions = [
          authActions.registerRequest(),
          authActions.registerFailure(),
          errorActions.setErrors(response),
        ];

        moxios.wait(() => {
          const request = moxios.requests.mostRecent();
          request.respondWith({
            status: 500,
            response: response,
          });
        });
        return store.dispatch(authActions.register(user)).then(() => {
          // return of async actions

          expect(store.getActions()).toEqual(expectedActions);
        });
      });
    });

Мои результаты тестирования:

- Expected
+ Received

    @@ -4,9 +4,69 @@
        },
        Object {
          "type": "REGISTER_FAILURE",
        },
        Object {
    -     "payload":  Request failed with status code 500,
    +     "payload": Response {
    +       "code": undefined,
    +       "config": Object {
    +         "adapter": [Function mockAdapter],
    +         "data": "{\"name\":\"ogulcan133\",\"password\":\"133131\",\"email\":\"kara@gmail.com\"}",
    +         "headers": Object {
    +           "Accept": "application/json, text/plain, */*",
    +           "Content-Type": "application/json;charset=utf-8",
    +         },
    +         ... // the error continue

Какой код строки нужно изменить? или что именно я должен делать по этому поводу. Спасибо за помощь

...