Реактивное тестирование с получением данных без разрешения обещания - PullRequest
0 голосов
/ 26 сентября 2019

Я обращаюсь к следующему руководству по извлечению данных на ReactJS.org , потому что я хотел использовать его в качестве шаблона для своего собственного теста.

Я использую npm test, которыйВызывает test-scripts test и, насколько мне известно, использует jasmine .

Я создал user.js и user.test.js, как описано в руководстве.

// user.test.js

import React from "react";
import { render, unmountComponentAtNode } from "react-dom";
import { act } from "react-dom/test-utils";
import User from "./user";

let container = null;
beforeEach(() => {
  // setup a DOM element as a render target
  container = document.createElement("div");
  document.body.appendChild(container);
});

afterEach(() => {
  // cleanup on exiting
  unmountComponentAtNode(container);
  container.remove();
  container = null;
});

it("renders user data", async () => {
  const fakeUser = {
    name: "Joni Baez",
    age: "32",
    address: "123, Charming Avenue"
  };

  jest.spyOn(global, "fetch").mockImplementation(() =>
    Promise.resolve({
      json: () => Promise.resolve(fakeUser)
    })
  );

  // Use the asynchronous version of act to apply resolved promises
  await act(async () => {
    render(<User id="123" />, container);
  });

  expect(container.querySelector("summary").textContent).toBe(fakeUser.name);
  expect(container.querySelector("strong").textContent).toBe(fakeUser.age);
  expect(container.textContent).toContain(fakeUser.address);

  // remove the mock to ensure tests are completely isolated
  global.fetch.mockRestore();
});

Когда я запускаю тест, я получаю Timeout - Async callback was not invoked within the 5000ms timeout specified by jest. setTimeout.Error

По какой-то причине он, похоже, не решает обещание.

Что я делаю не так?Я не могу поверить, что этот учебник прослушивается !Любая помощь приветствуется!

1 Ответ

0 голосов
/ 27 сентября 2019

Сейчас работает.Вы строго нуждаетесь в реакции-дом>> 16.9.0

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