Редакция-сага-план испытаний Failing Assert с точным ожидаемым и фактическим - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть createPostSaga, который POST с моим API, и я пытаюсь проверить его.Это сага:

export function* createPostSaga(action) {
  const token = yield select(selectToken);
  const headerParams = {
    Authorization: `JWT ${token}`
  };
  const apiCall = () => {
    let formData = new FormData();
    formData.append("title", action.payload.title);
    formData.append("content", action.payload.content);
    formData.append("thumbnail", action.payload.thumbnail);
    formData.append("tags", JSON.stringify(action.payload.tags));
    formData.append("slug", generateSlug(action.payload.title));
    return axios({
      method: "post",
      url: "/posts/",
      data: formData,
      headers: headerParams
    })
      .then(response => response.data)
      .catch(err => {
        throw err;
      });
  };

  try {
    const response = yield call(apiCall);
    yield put(push(`/posts/${response.id}/${response.slug}/`));
  } catch (error) {
    console.log(error);
  }
}

, и это код, который у меня до сих пор не работает:

describe("createPostSaga", () => {
    const action = {
      type: types.CREATE_POST,
      payload: {
        title: "test title",
        pub_date: "2018-11-12",
        content: "test content",
        tags: ["test1", "test2"],
        thumbnail: "http://fail",
        slug: "test-title"
      }
    }

    const apiCall = () => ({
      id: 1,
      ...action.payload  
    });

    it("calls the api and redirects", () => {
      testSaga(actions.createPostSaga, action)
        .next()
        .select(selectToken)
        .next()
        .call(apiCall)
        .next()
        .put(push("/posts/1/test-title/"))
        .finish()
        .isDone();
    })
  })

Когда я тестирую этот код, я получаю следующую ошибку:

SagaTestError:
    Assertion 2 failed: call effects do not match

    Expected
    --------
    { context: null, fn: [Function: apiCall], args: [] }

    Actual
    ------
    { context: null, fn: [Function: apiCall], args: [] }

Как видите, ожидаемые и фактические результаты совпадают.

Я также попытался напрямую скопировать и вставить функцию apiCall в мой тест, но она не удалась с тем же сообщением, и я в тупике.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...