Javascript 如何测试React本机模块?
我开发了一个React本机模块(包装SDK),我对使用mocha创建一些单元测试感兴趣。我对摩卡咖啡不太熟悉,但我不知道该怎么做 我有我的react-native模块,称之为Javascript 如何测试React本机模块?,javascript,reactjs,react-native,mocha.js,Javascript,Reactjs,React Native,Mocha.js,我开发了一个React本机模块(包装SDK),我对使用mocha创建一些单元测试感兴趣。我对摩卡咖啡不太熟悉,但我不知道该怎么做 我有我的react-native模块,称之为react-native-mymodule,我可以通过以下操作在应用程序中使用: npm安装react-native-mymodule react-native-link react-native-mymodule 然后,我可以使用以下工具导入我的模块: 从“react native mymodule”导入MySDK; 我正
react-native-mymodule
,我可以通过以下操作在应用程序中使用:
npm安装react-native-mymodule
react-native-link react-native-mymodule
然后,我可以使用以下工具导入我的模块:
从“react native mymodule”导入MySDK;
我正试图对单元测试做类似的事情。在我的根目录中,我有一个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\u modules/mocha/bin/mocha
调用mocha,我得到一个错误:
错误:找不到模块'react native mymodule'
有人能告诉我测试react本机模块的最佳方法吗?如果您想测试本机模块,我建议如下: 1.E2E测试 Node.js standalone无法解释本机模块。如果要在应用程序的上下文中测试本机模块,请使用appium/webdriverio创建e2e测试,而不是使用mocha编写单元测试 这样,您就可以在安装了应用程序的情况下启动模拟器 资源:
除此之外,您还必须模拟模块
babel
或node\u modules
目录问题引起的请原谅我的无知,但是模块的测试不应该是模块源代码的一部分而不是其他地方吗?作为模块的用户/消费者,我依靠依赖项进行单元测试。在消费部分,即我的应用程序中,我模拟模块,因为我知道该模块可以工作(正在进行单元测试),而且您可以使用Ezyme,Ezyme是React的JavaScript测试实用程序,它可以更轻松地测试React组件的输出。这也是E2E测试的好选择。使用Appium和Detox甚至Espuesto和XCUITest都可以对本机模块进行UI测试,但我现在想知道的是,是否可以启动应用程序并使用Appium或Detox导航到本机模块,然后触发XCUITest或Espresso?假设您正在移植一个已经存在的本机应用程序(带有E2E测试),以进行本机反应。@samk使用Appium应该可以