Как проверить React Native Module?

Я разработал модуль React Native (упаковка SDK) и заинтересован в создании некоторых модульных тестов с использованием mocha. Я не очень знаком с мокко, но я не могу точно понять, как поступить.

У меня есть свой собственный модуль реагирования, назовите его react-native-mymodule мой модуль, который я могу использовать в приложении, выполнив:

npm install react-native-mymodule

react-native link react-native-mymodule

Затем я могу импортировать мой модуль с:

import MySDK from "react-native-mymodule";

Я пытаюсь сделать то же самое с юнит-тестами. В моем корневом каталоге у меня есть каталог test/ котором я хочу провести все свои модульные тесты.

Мой простой тестовый файл в test/sdk.tests.js

import MySDK from "react-native-mymodule";
var assert = require('assert');


describe(‘MySDK, function() {
  describe('#indexOf()', function() {
    it('should return -1 when the value is not present', function() {
      assert.equal([1, 2, 3].indexOf(4), -1);
    });
  });
});

Я пытался изменить учебник, который я нашел в Интернете по компиляции модулей, но не повезло. Это файл test/setup.js:

import fs from 'fs';
import path from 'path';
import register from 'babel-core/register';

const modulesToCompile = [
  'react-native-mymodule
].map((moduleName) => new RegExp('${moduleName}'));


const rcPath = path.join(__dirname, '..', '.babelrc');
const source = fs.readFileSync(rcPath).toString();
const config = JSON.parse(source);
config.ignore = function(filename) {
  if (!(/\/node_modules\//).test(filename)) {
    return false;
  } else {
    return false;
  }
}

register(config);

.babelrc в корневом уровне моего модуля

{
  "presets": ["flow", "react-native"],
    "plugins": [
      ["module-resolver", {
        "root": [ "./js/" ]
      }]
    ]
}

У меня есть файл test/mocha.opts:

--require babel-core/register
--require test/setup.js

Я ./node_modules/mocha/bin/mocha мокко с помощью: ./node_modules/mocha/bin/mocha и получаю ошибку:

Error: Cannot find module 'react-native-mymodule'

Может кто-нибудь посоветовать мне лучший способ проверить реагировать нативные модули?

Ответ 1

Если вы хотите протестировать собственные модули, я предлагаю следующее:

1. Тесты E2E

Автономный Node.js не может интерпретировать собственные модули. Если вы хотите тестировать собственные модули в контексте вашего приложения, вы хотите создавать тесты e2e, используя appium/webdriverio вместо написания модульных тестов с mocha.

При этом вы фактически запускаете эмулятор с установленным приложением.

Ресурсы:

  2. Модульные тесты

Если вы хотите написать модульные тесты для своего родного модуля, напишите их на языке, на котором написан родной модуль

.Ресурсы:


Помимо этого, вы должны издеваться над модулями.

Ответ 2

Попробуйте эту ссылку, я думаю, это поможет вам. Извините, поскольку я не очень знаком с этим, я не могу дать решение, чем это.
https://jestjs.io/docs/en/tutorial-react-native.html