- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
组件正在导入包含 native 模块的库。这是一个人为的例子:
import React from 'react';
import { View } from 'react-native';
import { Answers } from 'react-native-fabric';
export default function MyTouchComponent({ params }) {
return <View onPress={() => { Answers.logContentView() }} />
}
下面是 react-native-fabric
的 Answers
的相关部分:
var { NativeModules, Platform } = require('react-native');
var SMXAnswers = NativeModules.SMXAnswers;
在 mocha 测试中导入此组件时,由于 SMXAnswers
是 undefined
而失败:
您如何模拟 SMXAnswers
或 react-native-fabric
以便它不会损坏并允许您测试您的组件?
p.s.: 你可以看到 full setup和 component我正在尝试在 GitHub 上进行测试。
最佳答案
使用 mockery
模拟任何原生模块,如下所示:
import mockery from 'mockery';
mockery.enable();
mockery.warnOnUnregistered(false);
mockery.registerMock('react-native-fabric', {
Crashlytics: {
crash: () => {},
},
});
这是一个完整的 setup example :
import 'core-js/fn/object/values';
import 'react-native-mock/mock';
import mockery from 'mockery';
import fs from 'fs';
import path from 'path';
import register from 'babel-core/register';
mockery.enable();
mockery.warnOnUnregistered(false);
mockery.registerMock('react-native-fabric', {
Crashlytics: {
crash: () => {},
},
});
const modulesToCompile = [
'react-native',
].map((moduleName) => new RegExp(`/node_modules/${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 {
const matches = modulesToCompile.filter((regex) => regex.test(filename));
const shouldIgnore = matches.length === 0;
return shouldIgnore;
}
}
register(config);
关于javascript - 如何模拟第三方 React Native NativeModules?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38292512/
require('http') console.log(require.cache.http) // undefined 我在 require.cache 中找不到 http 模块?我怎样才能检测到它
我升级到 react native 60 和 Pods。现在恢复为时已晚。我得到错误 @react-native-community/geolocation NativeModule.RNCGeolo
我刚刚使用 create-react-native-app 创建了一个新应用程序,然后将其分离以便能够制作一个 native 模块。 然后,我在包含我的包的 MainApplication.java
我正在使用 React Native,尝试创建一个可以接受 NSDictionary 函数的 native 模块。例如,假设我想调用一个具有多个潜在回调的函数。假设我可以有 0 个回调、15 个或中间
组件正在导入包含 native 模块的库。这是一个人为的例子: import React from 'react'; import { View } from 'react-native'; impo
当我在链接中使用图书馆搜索栏时 https://github.com/umhan35/react-native-search-bar => 我遇到过这个错误,任何遇到过这个错误的人都可以帮助我解决这个
尝试创建我的第一个 npm 模块以确定用户是否在打电话。它适用于 React Native 应用程序。无论我尝试什么,模块都会返回未定义的。 NativeModules 始终显示为空对象。 求助!下面
尝试创建我的第一个 npm 模块以确定用户是否在打电话。它适用于 React Native 应用程序。无论我尝试什么,模块都会返回未定义的。 NativeModules 始终显示为空对象。 求助!下面
在我的项目中使用的其中一个 node_modules 中,文件顶部显示: let RNRandomBytes = require('react-native').NativeModules.RNRan
我目前正在开发一个包含用于登录目的的 Auth0 的 native react 项目。当我尝试配置包时,它给了我这个错误: Error: Missing NativeModule. Please ma
我一直在考虑重写 Node.js 以在 Cygwin 上工作。我可以直接跟踪源代码: NativeModule.require('path') path 是我认为必须修补的模块。但我还不太确定它到底在
我正在尝试使用 react-native-image-picker,但出现错误:NativeModule.ImagePickermanager 为空。 import React, { Componen
我正在使用包 react-native-localize在应用程序中提供本地化。我已经链接了该库,它可以在设备上正常运行。 问题: 当我测试导入 的组件时 react 本地化 .我收到错误 react
我有一个 native 模块,我想输入它。 这是我的模块界面的示例 export interface BBAudioPlayer { playSound: (sound: 'click' | 't
我正在关注 this tutorial尝试在 react-native 中使用 Java(然后使用 JNI 并使用 C 代码)。 我已经执行了所有步骤,但是当我尝试在 js 中获取 native 模块
在 iOS 模拟器上运行时,任何 Radar 函数都会产生“NativeModules.RNRadar 未定义”错误。我已经按照 iOS 的 SDK 说明进行操作。我还没有为 Android 安装。
我正在使用 ReactNative 为 IOS 和 Android 构建一个移动应用程序。我还使用 Swift 为 iOS 构建了一个原生模块。但是当我从 JS 访问模块类时,它总是返回 null。
我正在开发一个使用 Expo 创建的 React Native 项目。我一直在使用普通的旧 AsyncStorage , 从 react-native 导入,一切都很好。 在查找如何模拟 AsyncS
我正在尝试将我的 react native 应用程序从使用 Mocha/Chai 切换到 Jest,但我遇到了问题。 以前在我的test/setup.js我有一些类似的东西: const Native
我正在尝试从 react native 调用 native ReactMethod 但它抛出以下错误: C++ Exception in 'NativeModules': java.lang.Runt
我是一名优秀的程序员,十分优秀!