Как выполнить модульное тестирование с пользовательским интерфейсом Kitten - PullRequest
0 голосов
/ 09 января 2020

В настоящее время я использую jest для проведения модульного тестирования с собственным приложением реагирования (expo CLI), но при тестировании рендеринга вполне нормально, когда я импортирую какие-либо компоненты из реагирующего нативного, но если я делаю это из других (например, реагирующих уроженец-щ-котенок). Там будет ошибка, как на картинке ниже. Может кто-нибудь, пожалуйста, помогите мне Спасибо заранее!

Вот когда я делаю снимок с реактивным компонентом

Когда я делаю снимок, который существует компонент пользовательского интерфейса котенка

Я настроил "transformIgnorePatterns" в пакете. json, но не работает

Мой пакет. json

  "jest": {
    "transform": {
      "^.+\\.(tsx|ts)?$": "ts-jest"
    },
    "preset": "jest-expo",
    "moduleFileExtensions": [
      "ts",
      "tsx",
      "js",
      "jsx",
      "json"
    ]
  },
  "transformIgnorePatterns": [
    "node_modules/(?!(jest-)?react-native|react-clone-referenced-element|@react-native-community|@ui-kitten/components|react-native-ui-kitten|expo(nent)?|@expo(nent)?/.*|react-navigation|@react-navigation/.*|@unimodules/.*|unimodules|sentry-expo|native-base)"
  ],
  "husky": {
    "hooks": {
      "pre-commit": "npm run lint",
      "pre-push": "npm run lint"
    }
  }

Мой jest.config. js

const {defaults} = require('jest-config');
module.exports = {
  // ...
  moduleFileExtensions: [...defaults.moduleFileExtensions, 'ts', 'tsx'],
  preset: "jest-expo",
  // ...
};

Мой babel.config. js


const path = require('path');
const Config = require('./config');

// FIXME: Resolve `transform[stderr]: Could not resolve` command-line warnings.
// FIXME: Reproducible when starting with clearing cache (npm start -- -c)
//
// TODO: Framework path aliasing even not needed here. Replace?
// TODO: Replace nested package.json-s with aliases

const moduleResolverConfig = {
  root: path.resolve('./'),
  alias: {
    '@kitten/theme': path.resolve(Config.KITTEN_PATH, 'theme'),
    '@kitten/ui': path.resolve(Config.KITTEN_PATH, 'ui'),
    '@eva-design/eva': path.resolve(Config.MAPPING_PATH),
    '@eva-design/processor': path.resolve(Config.PROCESSOR_PATH),
  },
};

module.exports = function (api) {
  api.cache(true);

  const presets = [
    'babel-preset-expo',
  ];

  const plugins = [
    ['module-resolver', moduleResolverConfig],
  ];

  return { presets, plugins };
};

1 Ответ

0 голосов
/ 09 января 2020

Обязательно игнорируйте сторонние модули в тестовой среде. В jest.config. js:

testPathIgnorePatterns: [
  '<rootDir>/node_modules',
],

Кроме того, есть известный обходной путь для этого, если это не удается:

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