React Native Expo - Jest - React Native Firebase - Инвариантное нарушение: родной модуль не может быть нулевым - PullRequest
1 голос
/ 13 января 2020

Я пытаюсь запустить тесты с шуткой, но он выходит из строя с ошибкой:

Invariant Violation: Native module cannot be null.

      at invariant (node_modules/invariant/invariant.js:40:15)
      at RNFBNativeEventEmitter.NativeEventEmitter (node_modules/react-native/Libraries/EventEmitter/NativeEventEmitter.js:36:7)
      at new RNFBNativeEventEmitter (node_modules/@react-native-firebase/app/lib/internal/RNFBNativeEventEmitter.js:24:5)
      at Object.<anonymous> (node_modules/@react-native-firebase/app/lib/internal/RNFBNativeEventEmitter.js:48:16)
      at Object.<anonymous> (node_modules/@react-native-firebase/app/lib/internal/registry/nativeModule.js:21:1)

Я использую последние версии для RN, Expo, Typescript и других. Моя конфигурация jest:

"jest": {
    "preset": "jest-expo",
    "transformIgnorePatterns": [
      "node_modules/(?!(jest-)?react-native|react-native|react-clone-referenced-element|@react-native-community|expo(nent)?|@expo(nent)?/.*|react-navigation|@react-navigation/.*|@unimodules/.*|sentry-expo|native-base|@ui-kitten|@react-native-firebase/auth|@react-native-firebase/app)"
    ]
  },

Если я удаляю @act-native-firebase из transformIgnorePatterns, то тест завершается ошибкой:

import { isAndroid, isBoolean } from '@react-native-firebase/app/lib/common';
    ^^^^^^

    SyntaxError: Cannot use import statement outside a module

      1 | import * as React from 'react';
    > 2 | import auth, { FirebaseAuthTypes } from '@react-native-firebase/auth';

1 Ответ

1 голос
/ 13 января 2020

Попробуйте издеваться @react-native-firebase/your/needed/module

Например:

jest.mock('@react-native-firebase/app/lib/common', () => ({
   isAndroid: jest.fn(() => true),
   isBoolean: jest.fn(() => false),
}));
...