使用 React Native 在 VS Code 中使用断点调试 Jest 单元测试

2023-11-30

我使用流行的方法创建了一个 React Native 项目点燃 CLI v2.0.0默认样板。 然后我用一堆 Nodejs 垫片装饰它,因为我将有一些基于节点的依赖项。 一切正常,我可以从命令行运行 Jest 测试。到目前为止,一切都很好。

然而,现在我的一个单元测试超时了。这可能是由于调用模拟节点函数的异步调用失败。但没有关于错误、位置等信息。

所以我想使用 Visual Studio Code 进行调试v1.13.1问题就开始了。我一生都无法弄清楚如何配置它以便我可以设置断点both在应用程序代码中的测试中+node_modules.

我已经安装了 React Native 工具v0.3.2并可以使用默认启动调试器Debug Android配置:

[vscode-react-native] Finished executing: adb -s emulator-5554 shell am broadcast -a "com.myexample.RELOAD_APP_ACTION" --ez jsproxy true
[vscode-react-native] Starting debugger app worker.
[vscode-react-native] Established a connection with the Proxy (Packager) to the React Native application
[vscode-react-native] Debugger worker loaded runtime on port 13746
Running application "MyApplication" with appParams: {"rootTag":1}. __DEV__ === true, development-level warning are ON, performance optimizations are OFF

但没有遇到断点。 VS 说:Breakpoint ignored because generated code not found (source map problem?).(顺便说一句:两者index.android.bundle and index.android.map刚刚生成于.vscode/.react)。 而且我也没有看到通过测试代码进行调试的方法(位于${projectRoot}/Tests).

基于大量的谷歌搜索,我创建了另一个调试配置来在 VS Code 中运行 Jest:

    {
        "type": "node",
        "request": "launch",
        "name": "Jest Tests",
        "program": "${workspaceRoot}/node_modules/jest-cli/bin/jest.js",
        "args": [
            "--config",
            "package.json",
            "--runInBand",
            "--verbose",
            "--no-cache",
            "-u"
        ],
        "runtimeArgs": [
            "--nolazy"
        ],
        "console": "internalConsole",
        "sourceMaps": true,
        "address": "localhost",
        "port": 8081,
        "outFiles": [
            "${workspaceRoot}/.vscode/.react"
        ],
        "env": {
            "NODE_ENV": "test"
        }
    }

这至少会运行测试,在 VS 调试控制台中显示测试报告,但再次没有任何断点被击中。

我也尝试过设置outFiles到 ignite 生成包的位置,即${workspaceRoot}/android/app/build/intermediates/assets/debug/*结果相同。

谁能指出我正确的方向吗?

附言。我在 Ubuntu 16.04 上:

System
  platform           linux                                                                                                
  arch               x64                                                                                                  
  cpu                4 cores      Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz  

JavaScript
  node               8.1.2        /usr/local/bin/node  
  npm                4.6.1        /usr/local/bin/npm   
  yarn               0.24.6       /usr/bin/yarn

React Native
  react-native-cli   2.0.1       
  app rn version     0.45.1      

Ignite
  ignite             2.0.0        /usr/local/bin/ignite  

Android
  java               1.8.0_111    /usr/bin/java  
  android home       -            undefined

终于找到了解决办法。 Node 中的新检查器协议似乎仍然存在许多问题8.*。简而言之,支持--inspect仍然是相当实验性的。

例如 NodeJS 检查器管理器 (NiM0.13.8)几秒钟后崩溃并断开 websocket (参见:NiM Github 问题#17和 Chromium bug #734615)。

所以我降级了NodeJS8.1.2 --> 7.10.1

现在事情终于按预期进行了。我可以使用以下调试配置在 VS Code 中进行所有调试,命中所有断点:

    {
        "type": "node",
        "request": "launch",
        "name": "Launch Tests",
        "program": "${workspaceRoot}/node_modules/.bin/jest",
        "args": [
            "--runInBand",
            "--no-cache"
        ],
        "runtimeArgs": [
            "--debug-brk=127.0.0.1:5858"
        ],
        "port": 5858
    }

在本应 5 分钟的事情上浪费了一天多的时间。不用想也知道。但幸运的是它现在可以工作了!

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

使用 React Native 在 VS Code 中使用断点调试 Jest 单元测试 的相关文章

随机推荐

  • 删除数组中连续出现的重复项

    有什么方法可以从下面的数组中删除连续的重复项 同时只保留第一个重复项 该数组如下所示 a array 1 gt go 2 gt stop 3 gt stop 4 gt stop 5 gt stop 6 gt go 7 gt go 8 gt
  • 如何在 Mac OS cocoa 中获取已安装 USB 设备的设备 ID、供应商 ID 和产品 ID

    我正在尝试编写一个 Cocoa 程序来检测连接到 Mac OS 的 iPod 我正在监听 NSWorkspaceDidMountNotification 和 NSWorkspaceDidUnmountNotification 以获取 USB
  • JObject.Parse 与 JsonConvert.DeserializeObject

    JsonConvert DeserializeObject 和 JObject Parse 有什么区别 据我所知 两者都采用字符串并且都在 Json NET 库中 什么样的情况会让一种情况比另一种更方便 或者主要只是偏好 作为参考 下面是我
  • Azure API 管理:带有后端 API 的 Oauth2

    我有一个后端 API 想要使用 Azure API 管理进行代理 该后端 API 要求我提供 Bearer Oauth2 令牌 我想使用 Azure APIM 为我处理 Oauth2 流 并且我想公开一个非常简单的 API 供客户端应用程序
  • 如何在我的多面标签之一中包含希腊符号?

    我正在尝试使用 ggplot2 v 2 2 2 1 创建一个绘图facet wrap 并且我只需要在一个方面标签中包含一个希腊符号 共五个 我尝试使用 Stack Overflow 上发布的代码 R 分面网格中分面标签的 R 希腊字母和普通
  • OCaml 会将多参数函数转换为柯里化函数还是反之亦然?

    当我学习 OCaml 基础知识时 我被告知 OCaml 中的每个函数实际上都是一个只有一个参数的函数 多参数函数实际上是一个接受一个参数并返回一个函数 该函数接受下一个参数并返回 这是柯里化 我明白了 所以我的问题是 case 1 if I
  • OpenXmlPowerTools DocumentBuilder 在单独的页面上合并文档

    I am trying to merge 4 word documents and force content of each document starts at new page But instead of appending tex
  • 仅使用“小阴谋家”中的表格来展平列表

    我正在通过 The LIttle Scherer 来学习Scheme 作为一个老C程序员 作为练习 我尝试编写一个过程来使用以下方法来展平列表only 小阴谋家 中的表格 IE define lambda cond car cdr and
  • 默认接口方法。抽象类和接口之间现在有什么深刻的、有意义的区别?

    我知道抽象类是一种特殊的类 不能被实例化 抽象类只能被子类化 继承 换句话说 它只允许其他类继承它 但不能实例化它 优点是它可以为所有子类强制执行某些层次结构 简单来说 它是一种强制所有子类遵循相同层次结构或标准的契约 我也知道接口不是类
  • Ruby on Rails:功能齐全的无表模型

    在搜索无表模型示例后 我发现了这段代码 这似乎是关于如何创建一个模型的普遍共识 class Item lt ActiveRecord Base class inheritable accessor columns self columns
  • 如何编写一个以通用方式接受迭代器或集合的函数?

    在过去 8 年左右的时间里 我几乎一直是一名 Java 程序员 最近我又开始使用 C 这是我在 C STL 和 Java 中遇到的关于迭代器的问题 在 Java 中 您可以编写一个采用迭代器的方法 如下所示 void someMethod
  • PyQt 组合框中单行中的不同颜色

    我正在使用 PyQt 开发一个 UI 其中 Qcombobox 中的单个项目可以有两个或三个用逗号分隔的单词 例如 第 1 项可以是 文本1 文本2 文本3 第 2 项将是 文本4 文本5 我想要做的是为 itemText 中由 分隔的项目
  • Apache Camel - 拆分和聚合 - 旧 Exchange 始终为空

    我发现这个问题已经被问过很多次了 但没有一个帖子有帮助或有一个结论性的解决方案 我正在拆分一条消息 然后使用 Aggregator2 聚合它 该代码引发异常 因为 oldExchange 始终为 null 所以为了测试我设计了一个小代码 我
  • 使用 Google 的 .Net 目录 API?

    我正在尝试使用 Google 的 Directory API for Net 创建我的第一个控制台应用程序 我有一个基于 Google 示例的代码 它向我展示了一些错误 其中之一当我尝试创建服务时 var service new Direc
  • 如何为ListBoxItems设置不同的Horizo​​ntalAlignment

    我已经发布一个问题昨天 但我认为我未能正确解释 让我再尝试一次 这就是我的目标 红色气泡代表传入消息 蓝色气泡代表传出消息 我可以使用以下 xaml 代码更准确地描述这一点 请注意 以下代码只是对我的实际 xaml 代码 带有一些 Data
  • 在 iOS 13 上读取 Mifare Ultralight NFC 标签时出现“标签连接丢失”错误

    我正在尝试读取 Mifare Ultralight 标签的页面 更具体地说EnOcean PTM 215B using NFCMifareTag sendMifareCommand发现并连接后的方法 问题是我尝试发送的所有命令都会导致 标签
  • angular2 仅从字符串生成组件

    请告诉我们如何在 Angular2 4 中执行以下操作 成分SomeComponent来自 Input以下 html 作为字符串
  • vhdl中的4位加法器

    我对 vhdl 语言还很陌生 所以请耐心等待 我刚刚为 1 位加法器编写了 vhdl 代码 但在为 4 位加法器编写时遇到了麻烦 这就是我到目前为止所得到的 如果有人能指出我要查找的内容的正确方向 那就太棒了 VHDL代码 LIBRARY
  • 使用 UITableViewCell 作为按钮

    我在 Stack Overflow 上读到了一些类似的问题 但没有一个给出令人满意的答案 我想要实现的是 设置 屏幕上的 Facebook 登录按钮 我想使用静态单元来实现这一点 但我很快发现我无法使用 Xcode 将 Action 连接到
  • 使用 React Native 在 VS Code 中使用断点调试 Jest 单元测试

    我使用流行的方法创建了一个 React Native 项目点燃 CLI v2 0 0与默认样板 然后我用一堆 Nodejs 垫片装饰它 因为我将有一些基于节点的依赖项 一切正常 我可以从命令行运行 Jest 测试 到目前为止 一切都很好 然