如何模拟第三方React Native NativeModules?

2024-02-15

组件正在导入包含本机模块的库。这是一个人为的例子:

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() }} />
}

这是相关部分Answers from react-native-fabric:

var { NativeModules, Platform } = require('react-native');
var SMXAnswers = NativeModules.SMXAnswers;

在摩卡测试中导入此组件时,由于以下原因而失败SMXAnswers is undefined:

你怎么嘲笑SMXAnswers or react-native-fabric这样它就不会损坏并允许您测试您的组件?

p.s.:你可以看到完整设置 https://github.com/digisquare/mobile/blob/701cb8704e874864fbc13afd0325f008a5baad9e/test/setup.js成分 https://github.com/digisquare/mobile/blob/701cb8704e874864fbc13afd0325f008a5baad9e/js/scenes/organizations/OrganizationsRow.js我正在尝试在 GitHub 上进行测试。


Use mockery模拟任何本机模块,如下所示:

import mockery from 'mockery';

mockery.enable();
mockery.warnOnUnregistered(false);
mockery.registerMock('react-native-fabric', {
  Crashlytics: {
    crash: () => {},
  },
});

这是一个完整的设置示例 https://github.com/digisquare/mobile/blob/f489ec8b28a91f84ebee38eda6278dc56c04fef4/test/setup.js:

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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何模拟第三方React Native NativeModules? 的相关文章

随机推荐

  • Laravel 授权策略 AccessDeniedHttpException 此操作未经授权

    我有这样的设置 应用程序 策略 观察策略
  • 仅适用于一列的特殊网格线样式

    我如何在网格的一列上设置自定义网格线样式DataGrid http msdn microsoft com en us library system windows controls datagrid aspx 特别是 我希望一列有一条双线作
  • 在 Jupyter 笔记本中使用新的 Windows 版本 R

    我已经安装了 Windows 版 R 版本 3 5 1 并将其内容复制到 Anaconda3 使用的 R 文件夹中 但是 conda 仍然将当前版本标识为 3 4 3 Anaconda3 文件夹中是否有 版本 ID 文件 简短的解决方案 简
  • 混淆汇编和反射

    我想通过以下方式混淆我的程序集文件 dll exe 点模糊器 我的问题是 如果我这样做 我仍然可以使用这些程序集中的类和类型的原始名称 我的意思是混淆之前的名称 并使用System Reflection与他们合作的方法 如果您需要更多详细信
  • 在SQL中查找最长的连续递增数字序列

    对于这个例子 假设我有一个包含两个字段的表 AREA varchar 30 and OrderNumber INT 该表有以下数据 AREA OrderNumber Fontana 32 Fontana 42 Fontana 76 Font
  • 跟踪编译器中 AST 节点的源位置 (ocaml)

    我正在使用 ocamllex yacc 在 ocaml 中编写编译器 一切进展顺利 但我遇到了设计问题 对于我创建的每个 AST 节点 最好能获得有关源代码中该节点的行 字符位置的信息 这对于稍后向用户提供错误消息很有用 现在 我可以向我的
  • kubectl 无法连接到服务器:x509:由未知机构签名的证书

    我在一台机器 Windows 上运行 kubectl 时遇到错误 k8s集群运行在CentOs 7 kubernetes cluster 1 7上 师傅 工人 这是我的 kube config apiVersion v1 clusters
  • Chrome 移动设备上的字体问题,字体大小呈现得更大

    我在使用 Chrome 移动设备时遇到问题 某些文本的字体大小比 CSS 中的字体大小大 我检查了开发人员工具 发现这些文本继承了正确的字体大小 但在计算样式中仍然渲染了 5px 大 我找到这个帖子修复 Mobile Safari iPho
  • mongodb - 查找具有最接近整数值的文档

    假设我有一个文档集合 其比率属性是浮点数 ratio 1 437 如何编写一个查询来查找与给定整数最接近的值的单个文档 而不使用驱动程序将它们全部加载到内存中并找到具有最小值的文档abs x ratio 有趣的问题 我不知道你是否可以在单个
  • 将 data.table 聚合到原始值间隔的行

    我有一些data table金额列如下 n 1e5 set seed 1 dt lt data table id 1 n amount pmax 0 rnorm n mean 5e3 sd 1e4 给出的中断向量如下 breaks lt a
  • 在数组中查找与另一种颜色最接近的颜色的最佳算法是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Ionic / Bower / cordova - 忽略构建文件

    我的项目结构如下 MyApp hooks platforms android ios www js css templates lib including all bower components 眼下 www lib目录正在占用21 8
  • 离线 3D 交互式饼图

    我想构建一个 3D 交互式饼图 首先我使用谷歌图表 但不幸的是这不能离线工作 我使用了 jpgraph jscharts 和 rgraph 中的图表 但没有达到我想要的效果 我想要一个图表 它必须是免费的 可以离线工作 并且与谷歌图表具有大
  • 通过 UILabel 文本的第一行将图像居中

    我想将图像居中到 UILabel 文本第一行的 Y 位置中心 我使用砌体来设置自动布局约束 如下所示 haveReadIndicatorImgView mas makeConstraints MASConstraintMaker make
  • 没有 Spring 的 Spring JDBC 模板

    是否有像 Spring JDBC Template 这样的 Java 库 具有相同质量的代码和文档以及类似的数据访问异常层次结构 但不依赖于其他 Spring 模块 根据 core beans context 模块http mvnrepos
  • java程序要求用户输入第二大和最大的数字

    java program that asks user to input a number and print the 1st and 2nd largest numbers import java util Scanner public
  • 类型双关语与联盟成员访问

    按照这个https stackoverflow com a 1812932 1814023 https stackoverflow com a 1812932 1814023 writing one member of union and
  • PHP 将 JSON 数据从 Android 插入 MySQL 数据库

    我有一个 Android 应用程序 它通过 HTTP POST 方法将数据发送到 PHP 脚本 并尝试解析数据以存储到 MySQL 中 Android 应用程序不是我编写的 但我可以访问下面包含的源代码 它发送打包为 JSON 数组的数据
  • 注解:通过注解限制对类的引用

    我认为这是不可能的 但也许我错了 所以我问你 是否可以 如果我定义一个仅接受扩展某些接口或类的类引用的注释 这是可能的 Class
  • 如何模拟第三方React Native NativeModules?

    组件正在导入包含本机模块的库 这是一个人为的例子 import React from react import View from react native import Answers from react native fabric e