«TypeError» при попытке рендеринга узла «Реагировать-родной-реанимированный» в тесте Jest - PullRequest
0 голосов
/ 14 февраля 2020

При попытке визуализировать мое приложение в Jest для проведения интеграционного тестирования я получаю следующую ошибку:

    TypeError: Cannot read property 'createNode' of undefined

      at AnimatedParam.createNode [as __nativeInitialize] (node_modules/react-native-reanimated/src/core/AnimatedNode.js:126:24)
      at AnimatedParam.__nativeInitialize [as __attach] (node_modules/react-native-reanimated/src/core/AnimatedNode.js:71:10)
      at new __attach (node_modules/react-native-reanimated/src/core/AnimatedParam.js:11:10)
      at createAnimatedParam (node_modules/react-native-reanimated/src/core/AnimatedParam.js:71:10)
      at createAnimatedFunction (node_modules/react-native-reanimated/src/core/AnimatedFunction.js:38:17)
      at Object.<anonymous> (node_modules/react-native-reanimated/src/derived/interpolate.js:17:39)

Код, на который он жалуется в react-native-reanimated, выглядит следующим образом:

  __nativeInitialize() {
    if (!this.__initialized) {
      ReanimatedModule.createNode(this.__nodeID, { ...this.__nodeConfig });
      this.__initialized = true;
    }
  }

И ReanimatedModule - псевдоним типа для NativeModule из библиотеки react-native. Кроме того, я не нашел никакой полезной информации, которая помогла бы решить эту проблему.

Что особенно странно здесь, это то, что я не использую react-native-reanimated непосредственно в своей кодовой базе, и единственные компоненты библиотеки, которые я могу найти насколько я могу судить, которые его используют, не отображаются в тестируемых компонентах.

Я не смог каким-либо разумным образом уменьшить свой код, чтобы воспроизвести эту проблему, и код в Вопрос защищен корпоративными авторскими правами, поэтому я не могу поделиться репозиторием. Я буду продолжать пытаться воспроизвести ошибку в небольшом примере, но я хотел бы получить этот вопрос на случай, если у кого-то есть опыт с этой проблемой.

1 Ответ

0 голосов
/ 07 апреля 2020

Я только что столкнулся с этим.

Мне пришлось смоделировать весь реанимированный модуль с помощью кода, подобного следующему:

jest.mock('react-native-reanimated', () => {
  const View = require('react-native').View;

  return {
    Value: jest.fn(),
    event: jest.fn(),
    add: jest.fn(),
    eq: jest.fn(),
    set: jest.fn(),
    cond: jest.fn(),
    interpolate: jest.fn(),
    View: View,
    Extrapolate: { CLAMP: jest.fn() },
    Transition: {
      Together: 'Together',
      Out: 'Out',
      In: 'In',
    },
  };
});

У меня есть это в /spec_config/jest.js файл, который загружается (вместе с несколькими другими глобальными насмешками) со следующей строкой в ​​моем jest.config.js файле: setupFilesAfterEnv: ['./spec_config/jest.js'],

Мне кажется, что это беспорядок, но так оно и есть этот мир, наверное. (ч / б этот выпуск GitHub: https://github.com/software-mansion/react-native-reanimated/issues/205)

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