Рекомендовать: renderComponent выдает ошибки при шутливом тестировании - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть компонент более высокого порядка, который использует renderComponent с branch для отображения экрана загрузки, когда мои данные все еще загружаются (данные поступают из запроса react-apollo):

import { branch, renderComponent } from 'recompose';

const waitForLoad = branch(
  ({ data: { loading } }) => loading,
  renderComponent(() => <div>LOADING...</div>),
);

Это работает нормально, но это доставляет мне неприятности, когда я пытаюсь проверить с помощью шутки и энзима.Мой тест включает в себя строку

import { ApolloProvider } from 'react-apollo';
import MockRouter from 'react-mock-router';

...

mount(
    <ApolloProvider client={client}>
      <MockRouter push={push}>
        <Backups />
      </MockRouter>
    </ApolloProvider>
  )

, где Backups обернуто waitForLoad().

Тест выдает следующие ошибки enter image description here

Все отлично работает при удалении renderComponent.

У меня есть файл установки, работающий до всего остального:

import { JSDOM } from 'jsdom';
import Enzyme from 'enzyme';
import Adapter from 'enzyme-adapter-react-15';
import 'jsdom-global/register';

const jsdom = new JSDOM('<!doctype html><html><body></body></html>');
const { window } = jsdom;
window.URL = {
  createObjectURL: () => ({}),
  revokeObjectURL: () => ({}),
};

function copyProps(src, target) {
  const props = Object.getOwnPropertyNames(src)
    .filter(prop => typeof target[prop] === 'undefined')
    .reduce((result, prop) => ({
      ...result,
      [prop]: Object.getOwnPropertyDescriptor(src, prop),
    }), {});
  Object.defineProperties(target, props);
}

global.window = window;
global.document = window.document;
global.navigator = {
  userAgent: 'node.js',
};
copyProps(window, global);

Enzyme.configure({ adapter: new Adapter() });

Я пробовал много решений длявышеуказанные ошибки, в том числе:

Есть идеи?

1 Ответ

0 голосов
/ 26 апреля 2018

В случае, если кто-то еще окажется здесь: Обновление отреагирует с 15. * до 16. * Решил проблему.

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