[英]How to test React Native Module?
我开发了一个 React Native 模块(包装了一个 SDK)并且我对使用 mocha 创建一些单元测试很感兴趣。 我对摩卡不是很熟悉,但我无法确切地弄清楚如何进行。
我有我的 react native 模块,称之为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
调用 mocha: ./node_modules/mocha/bin/mocha
mocha/ ./node_modules/mocha/bin/mocha
并且出现错误:
Error: Cannot find module 'react-native-mymodule'
任何人都可以就测试本机模块的最佳方法向我提出建议吗?
如果你想测试原生模块,我建议如下:
Node.js Standalone 无法解释本机模块。 如果您想在您的应用程序上下文中测试本机模块,您需要使用 appium/webdriverio 创建 e2e 测试,而不是使用 mocha 编写单元测试。
有了这个,您实际上启动了一个安装了应用程序的模拟器。
资源:
如果你想为你的原生模块编写单元测试,用原生模块所用的语言编写它们
资源:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.