如何使用 Jest 测试 React Native 中的警报

2024-03-04

因此,在我的程序中,当用户登录时,如果所有凭据均正确,如果缺少任何详细信息或格式不正确,他们将进入下一页,并且屏幕上会显示警报。

如果按下按钮后已显示警报,如何在 React Native 中使用 Jest 进行测试,并确认警报文本是否正确?

我的一些组件如下所示:

...
.catch(function(error) {
    // Handle Errors here.
    var errorCode = error.code;
    var errorMessage = error.message;
    alert(errorMessage)
  });

错误文本是由 Google 的 Firebase 生成的,但我知道它是什么。


假设您正在使用react-native的Alert并自己调用它,您可以像这样监视它:

import { Alert } from 'react-native';

jest.spyOn(Alert, 'alert');

然后您可以检查它是否已被调用,以及使用了哪些参数:

expect(Alert.alert).toHaveBeenCalledWith(errorMessageText)

[更新] 还可以测试与警报的交互:

const mockOnPress = jest.fn()

Alert.alert('Title', 'Message', [{text: 'OK', onPress: mockOnPress}])

/** 
 * here we inspect the mock to get:
 * - the latest call to Alert.alert (`calls[0]`)
 * - its third argument (`calls[0][2]`), which is the buttons config array
 * - the first button in the array and its onPress (`calls[0][2][0].onPress()`)
 */
Alert.alert.mock.calls[0][2][0].onPress()

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

如何使用 Jest 测试 React Native 中的警报 的相关文章

随机推荐

  • 如何在材料设计中更改操作栏菜单项文本颜色

    我正在尝试更新我的记事本应用程序以使用 Material Design 即使在较旧的设备上也是如此 到目前为止我做了什么 将库 appcompat v7 添加到我的项目中 以支持旧设备上的 Material Design 修改Android
  • Plone/Zope 的外部方法

    我有两个 Plone 实例在服务器上运行 它们的位置是 usr local Plone Inst1 和 usr local Plone Inst2 我正在尝试设置外部方法 但很难确定我的 扩展 文件夹应该放置在哪里 似乎无论我把它放在哪里
  • 如何使用CSS更改滚动条颜色[重复]

    这个问题在这里已经有答案了 我的jsfiddle在这里 http jsfiddle net sureshpattu Xck2A 我试图更改滚动条的颜色 但在这里它不起作用 Css flexcroll scrollbar face color
  • 什么是“参数相关查找”(又名 ADL 或“Koenig 查找”)?

    关于什么是参数依赖查找有哪些好的解释 许多人也将其称为 Koenig Lookup 我最好想知道 为什么这是一件好事 为什么这是一件坏事 它是如何工作的 柯尼希查找 or 参数相关查找 http en wikipedia org wiki
  • 如何在视图中多次正确使用同一个 AngularJS 1.5 组件?

    我正在使用 AngularJS 1 5 的新组件创建一组小部件 问题是 当多次使用同一个小部件时 它们会以某种方式共享控制器或范围 我认为组件的一件事是它们的范围是完全隔离的 我的主要 html 模板包含小部件
  • 应用内购买错误的恢复按钮

    我在应用程序中恢复应用内购买时遇到问题 我已经在我的项目中应用了这行代码 SKPaymentQueue defaultQueue addTransactionObserver self SKPaymentQueue defaultQueue
  • Jsp中如何设置输入框的值

  • Kubernetes 集群未将外部 IP 公开为

    这是我的 service yaml 代码 kind Service apiVersion v1 metadata name login spec selector app login ports protocol TCP name http
  • 像管理电子书一样管理 Android 应用程序中的文本

    我正在开发一个application它看起来像一个电子书阅读器 但它不完全是一个电子书阅读器 我有一篇很大的文章 分为不同的章节 现在我想将该文本呈现为一本书 用户应该感受到阅读电子书的感觉 该电子书将具有各种功能 例如GoTo 搜索 目录
  • 's' 附近的语法不正确。字符串 ')' 后面的未闭合引号

    我在编程方面有点菜鸟 我想知道我在这里做错了什么 有人可以帮助我吗 我正在制作一个控制台应用程序 在其中同步两个数据库 但是当我尝试将数据插入表中时 它会抛出此异常 代码是 public static void AddInterationP
  • 获取redis中lua中的当前日期和时间

    如何获取嵌入在 Redis 中的 Lua 中的当前日期 时间 我需要采用以下格式 YYYY MM DD HH MM SS 尝试使用 os date 但它无法识别它 Redis 的 Lua 沙盒只有少数库 并且os不是其中之一 你可以调用Re
  • 没有连接的 AMQP/RabbitMQ 通道什么时候会死亡?

    我有一个简单的 RabbitMQ 测试程序 随机将消息排队 另一个读取它们 所有这些都使用 Spring AMQP 如果消费者死亡 例如 在没有机会关闭其连接或通道的情况下终止进程 则它尚未确认的任何消息似乎将永远保持未确认状态 我看过很多
  • 在 Chrome 的 URL 栏中用 Javascript 设置文本框的值只是将该值写入屏幕

    我试图通过在网址栏中输入以下内容来将网页中文本框的值设置为特定值 javascript document getElementById textboxID value Value 然而 每当我这样做时 它只会返回一个空白屏幕 并在角落里写下
  • PhantomJS 出现 Selenium 错误:消息:“phantomjs”可执行文件需要位于 PATH 中

    我正在尝试运行这个脚本 https github com Chillee coursera dl all https github com Chillee coursera dl all 但是 该脚本在该行失败session webdriv
  • 调整窗口大小时,光滑的滑块没有响应

    我使用光滑滑块在 WordPress 中创建了一个图像滑块 我正在使用中心模式 我想要一张图像居中 每一侧都有一个稍微显示 但我有一些问题 首先 当我调整窗口滑动滑块的大小时 直到我与滑块交互时才计算新的图像宽度 这个问题在演示中不存在 其
  • keras中反向传播的跳过层

    我将 Keras 与张量流后端一起使用 我很好奇是否可以在反向传播期间跳过一层 但让它在前向传递中执行 这就是我的意思 Lambda lambda x a x 我要申请a to x在前向传递中 但我不希望在反向传播发生时将 a 包含在推导中
  • Angular 2 应用程序默认情况下是否会阻止存储 cookie?

    我正在连接的后端开发人员向我保证 当他发送 cookie 时set cookieheader 表示浏览器应自动保存 cookie 并通过后续请求将其发送回来 Angular 2 是否会阻止发送 cookie 由于后端和前端都在本地主机上运行
  • 如何在 Common Lisp 中创建二进制流(而不是文件)?

    我有一个将一些二进制数据输出到流的函数 但流是抽象的 这意味着流可以是文件流 也可以是其他流 但该流必须是支持写字节功能的二进制流 我搜索过但没有找到答案 我想做的是 我有一个函数可以将一些数据转换为 gif 但我不想将数据输出到文件中 我
  • 当用户结束讲话时停止语音识别

    Siri 如何确定我何时说完 我想知道的原因是我想在我的应用程序中使用 Apple 的语音识别 API 实现类似的功能 这是可行的 还是知道用户何时停止说话的唯一方法是通过用户输入 你可以使用计时器 我有同样的问题 但我无法用优雅的方法解决
  • 如何使用 Jest 测试 React Native 中的警报

    因此 在我的程序中 当用户登录时 如果所有凭据均正确 如果缺少任何详细信息或格式不正确 他们将进入下一页 并且屏幕上会显示警报 如果按下按钮后已显示警报 如何在 React Native 中使用 Jest 进行测试 并确认警报文本是否正确