首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

TS Jest无法区分自定义错误类和标准javascript错误类

TS Jest 是一个用于进行 TypeScript 代码测试的强大工具。它提供了丰富的功能和断言库,可以帮助开发人员编写可靠的单元测试。

对于无法区分自定义错误类和标准 JavaScript 错误类的问题,可以采取以下措施:

  1. 区分错误类:在 TypeScript 中,可以使用 instanceof 运算符来判断一个对象是否是某个特定类的实例。可以创建一个函数来判断一个错误对象是否是自定义错误类的实例。例如:
代码语言:txt
复制
function isCustomError(error: Error): boolean {
  return error instanceof CustomError;
}

上述代码中的 CustomError 是自定义错误类的名称。通过调用 isCustomError 函数,可以判断传入的错误对象是否是自定义错误类的实例。

  1. 标记错误类型:可以在自定义错误类中添加一个属性或方法来标记错误的类型。例如,可以在自定义错误类中添加一个 type 属性,用于标识错误的类型。
代码语言:txt
复制
class CustomError extends Error {
  type: string;

  constructor(message: string) {
    super(message);
    this.type = 'CustomError';
  }
}

通过在自定义错误类中添加 type 属性,可以在测试代码中使用该属性来判断错误的类型。

  1. 使用 Jest 进行测试:可以使用 Jest 提供的断言方法来编写针对错误类的测试。例如,可以使用 toThrowError 方法来测试某个代码块是否抛出了特定类型的错误。
代码语言:txt
复制
test('should throw CustomError', () => {
  expect(() => {
    throw new CustomError('Something went wrong');
  }).toThrowError(CustomError);
});

上述代码中的测试用例会验证是否抛出了 CustomError 类型的错误。

总结起来,要区分自定义错误类和标准 JavaScript 错误类,可以使用 instanceof 运算符进行判断,或在自定义错误类中添加标识属性来辅助判断。在测试过程中,可以使用 Jest 提供的断言方法来验证特定类型的错误是否被抛出。

对于 TS Jest 的具体使用和更多相关功能,可以参考腾讯云的云计算产品 Jest 的官方文档:TS Jest 官方文档

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

可能是目前最详细从零开始配置 TypeScript 项目的教程

TypeScript TypeScript 背景 工具函数库的实现采用 TypeScript,除了可以自动生成 ts 声明文件供外部更好的提示使用之外,也可以避免 JavaScript 动态性所带来的一些无法预料的错误信息...[96] - 重点可以了解一下测试金字塔测试置信度 [译] JavaScript 单元测试框架:Jasmine, Mocha, AVA, Tape Jest 的比较[97] - 单元测试框架对比中文版...按照官方教程进行依赖安装项目初始化: npm install --save-dev jest typescript ts-jest @types/jest npx ts-jest config:init...这里通过 npm 的脚本钩子 pre post 将脚本的功能区分开,从而使脚本的语义更加清晰(当然脚本越来越多的时候也可能容易增加开发者的认知负担)。... Jest 的比较[173] JavaScript unit testing frameworks in 2020: A comparison[174] javascript-testing-best-practices

4.9K22

从 0 开始手把手带你搭建一套规范的 Vue3.x 工程化项目

解决这些问题,理论上讲,口头约定代码审查都可以,但是这种方式无法实时反馈,而且沟通成本过高,不够灵活,更关键的是无法把控。不以规矩,不能成方圆,我们不得不在项目使用一些工具来约束代码规范。...It targets Vue 3. jest[43] Delightful JavaScript Testing. vue-jest[44] Jest Vue transformer ts-jest[45...转换 "^.+\\.ts$": "ts-jest", // ts 文件用 ts-jest 转换 }, // 匹配 __tests__ 目录下的 .js/.ts 文件 或其他目录下的 xx.test.js...npm i @types/jest -D TypeScript 的编译器也会提示 jest 的方法类型找不到,我们还需把 @types/jest 添加根目录下的 ts.config.json(TypeScript...'plugin:jest/recommended' ], ... } 现在,我们的单元测试代码就不会有错误提示信息了 ؏؏☝ᖗ 乛 ◡ 乛 ᖘ☝؏؏ ?

6.3K62
  • 使用TypeScript两年后,还值得吗?

    首先要做的事 - 配置 正如我所提到的,我对reactredux有一些经验,所以我想利用这些优势,在新项目中使用类似的(自定义)配置。...必须为TS提供一个声明,用TSLint替换ESLint,集成TypeScript的loaderbabel的配置,将TS插入Jest(测试平台)。 一些操蛋的事情马上就会发生。...TS配置并不好搞,“简单的复制并测试”这种策略并不是上手的最佳方法。 在将tsconfig.json放入项目之前,最好仔细阅读文档。 此外,Jest(转换,模块映射器)css模块存在一些问题。...我不会比较TSES6之间的差异,因为最终它们都会产生类似的JavaScript代码(在编译转换之后)。...,很多错误都是在编译阶段捕获的,而不是在运行时 让非JS开发人员更容易阅读理解代码 你可以使用JavaScript未来版本中的功能 为单元测试编写mocks,stubsfakes要容易得多,因为你知道他们的确切接口

    1.4K20

    前端入门25-福音 TypeScript声明正文-TypeScript

    那么在面向对象的编程中,自定义了某个对象,并赋予它一定的属性行为,这样的描述在 Java 里很容易实现,但在 JavaScript 里却需要通过定义构造函数,对构造函数的 prototype 操作等处理...中 ES6 自定义某个的用法,与 Java 的写法有如下区别: 的属性只能在构造函数内声明初始化,无法像 Java 一样在构造函数外面先声明成员变量的存在; 无法定义静态变量或静态方法,即没有...(属性行为是 Java 里面向对象常说的概念,属性对应变量,行为对应方法,在 JavaScript 里变量方法都属于对象的属性,但既然 TypeScript 也有类似 Java 的接口语法,所以这里我习惯以...后来 ES6 中新增了 class 语法糖,可以类似 Java 一样通过 class 自定义对象,但还是有很多区别,比如,ES6 中的 class 语法糖,就无法声明成员变量,成员变量只能在构造函数内定义初始化...模块 JavaScript 跟 Java 很不一样的一点就是,Java 有 class 机制,不同文件都需要有一个 public class,每个文件只是用于描述一个的属性行为,中的变量不会影响其他文件内的变量

    3.2K21

    单元测试

    接下来的问题就是:我们代码中的哪部分是这两用户会看到、用到知道的呢?...公共组件 公共方法 公共自定义hook 需求功能 组件的Props(组件的入参是否在正确的场景或时机被正确的使用或调用) Render 交互(基于用户的交互判断关键节点的流程是否在正确的时机被正确执行...它提供了一组用于编写可靠可维护的测试的实用函数工具。 jest-location-mock 用于在 Jest 测试中模拟浏览器window.location对象的库。...,会出现报错 这种情况通常是由于在一组测试用例中,前一个测试用例没有正确地清理或重置测试环境,导致后续的测试无法找到期望的元素或状态。...因此,callback 可在不确定的时间频率(在间隔以及 DOM 变化时调用)被调用(或者检查错误)。所以这也意味着你的副作用可能会被多次调用!

    27610

    WebStorm for Mac(JavaScript开发工具)中文版

    WebStorm 新版对JavaScript,TypeScriptCSS支持更好,改进了Vue.js的体验,并为Jest集成增加了新功能。...React钩子的提取方法该提取方法重构现在与当地的功能使用解构的返回值,使得它非常适合提取自定义作出反应挂钩。...对CSS模块的Camel案例支持如果在项目中使用CSS模块,JavaScript文件中的的代码完成现在将建议带有破折号的名的驼峰版本。...在悬停时,您将看到来自测试运行器的错误消息,您可以立即开始调试测试。使用CucumberTypeScript进行测试使用CucumberTypeScript?...现在,您可以跳到从步骤.feature文件 到它们的定义中 的.ts文件中使用速战速决(产生缺定义Alt-Enter组合)。

    4.9K50

    如何做前端单元测试

    前言 对于现在的前端工程,一个标准完整的项目,通常情况单元测试是非常必要的。但很多时候我们只是完成了项目而忽略了项目测试。...必要性:JavaScript 缺少类型检查,编译期间无法定位到错误,单元测试可以帮助你测试多种异常情况。 正确性:测试可以验证代码的正确性,在上线前做到心里有底。...Jest Mocha 相比,无论从 github starts & issues 量,npm下载量相比,都有明显优势。...运行时内部先执行( jest-babel ),检测是否安装 babel-core,然后取 .babelrc 中的配置运行测试之前结合 babel 先把测试用例代码转换一遍然后再进行测试 4.测试 ts...get.ts', 'sum.ts', 'src/utils/**/*'], // 告诉 jest 哪些文件需要经过单元测试测试 coverageThreshold: { global: {

    3.3K20

    Jest单元测试之旅—实践总结

    在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基(超)、抽象、或者派生(子类)中的方法。...而针对与我们前端来说,我认为单测就是:UI测试逻辑测试,逻辑测试包含:工具/函数、业务相关代码测试。UI测试分为:公共组件业务组件测试。 为什么要写单元测试?...还有一种情况是,我们自定义或者第三方提供的全局sdk此时需要通过其他手段进行模拟测试。...这里通过localStorage自定义birdage进行举例说明: // src/example8.ts export const getLocalStorage = () => { return...大部分类的测试上述测试基本一致,只是从函数或者对象变成了

    10.3K20

    基于 TypeScript 的 Weex 优化实践

    2.强大的工具构建 类型允许 JavaScript 开发者在开发 JavaScript 应用程序时使用高效的开发工具常用操作,比如静态检查代码重构。...或者通过使用两个编译器,搭配 ts-loader babel-loader 来接入 TypeScript。 添加 tsconfig.json,并加入相关你需要的自定义配置。...声明自定义方法时,应避免使用这些保留名称 其他接口描述对象可以传递给装饰器函数或者 Vue.extend ? 其他接口描述对象在组件的使用: ?...TypeScript 的组件 JavaScript 的接口描述组件导出有些差异: 组件导出的是 Vue 接口描述组件导出的是 ComponentOptions接口 所以在入口文件对Vue进行初始化上也会有些区别...1.减少Bug 1)类型错误 TypeScript 的类型保护、联合类型、类型推导等特性,可以避免发生低级类型错误问题。

    1.9K60

    前端构建新世代,Esbuild 原来还能这么玩!

    兼容性 Esbuild 本身的限制,包括如下: 没有 TS 类型检查 不能操作 AST 不支持装饰器语法 产物 target 无法降级到 ES5 及以下 意味着需要 ES5 产物的场景只用 Esbuild...综合来看,SWC 与 Esbuild 的关系类似于当下的 Babel Webpack,前者更适合做兼容性自定义要求高的 Transformer(比如移动端业务场景),而后者适合做 Bundler... Minimizer,以及兼容性自定义要求均不高的 Transformer。...实际的插件应该考虑到自定义缓存(减少 load 的重复开销)、sourcemap 合并(源代码正确映射)错误处理。可以参考 Svelte plugin。...代替 ts-jest 使用 esbuild-jest 代替ts-jest,我曾经尝试在某些大型包中使用 esbuild-jest 来作为 transformer,相比 ts-jest,整体大概提升 3

    1.9K10

    异步函数中的异常处理及测试方法

    你将学到什么 通过后面的内容你将学到: 如何从 Javascript 的异步函数中抛出错误 如何使用 Jest 测试来自异步函数的异常 要求 要继续往下读你应该: 对 Javascript ES6...有基本的了解 安装 Node.Js Jest 如何从 Javascript 的常规函数中抛出错误 使用异常而不是返回码(清洁代码)。...这是对它的测试(使用Jest): ? 也可以从 ES6 的中抛出错误。在 Javascript 中编写时,我总会在构造函数中输入意外值。下面是一个例子: ? 以下是该类的测试: ?...以下是在Jest中测试异常的规则: 使用 assert.throws 来测试普通函数方法中的异常 使用 expect + rejects 来测试异步函数异步方法中的异常 如果你对如何使用 Jest...测试 Koa 2 感兴趣,请查看使用JestSupertest进行测试的简绍这篇文章。

    3K30

    Bun:不仅是新的JavaScript运行时,并且重塑了JavaScript工具链

    dotenv、cross-env:Bun 默认支持读取.env文件的配置vite、webpack Bun 自带构建功能ts-node、tsx Bun可以直接运行 TypeScript tsx 文件jest...Bun是一个支持Jest的测试运行器,具有快照测试、模拟代码覆盖率等功能,因此不再需要以下测试相关的工具对比 Deno在讨论 JavaScript 运行时的演变时,很难忽略 Deno。...这种优化使得 uWebSockets 能够在最具挑战性的应用中提供简单、安全标准兼容的网络。...它的运行时集成了 JavaScript 转换器。这样,你就可以直接运行 .js、.ts、.jsx .tsx 文件。...例如,nodemon 会导致中断 HTTP WebSocket 连接,而 --watch 作为实验性标记,可能无法提供全套功能,在 GitHub 上有很多相关的 issure 也没解决。

    3.4K52

    Midway - 一个面向未来的云端一体 Node.js 框架

    为此,我们需要定义一个我们自己的业务错误,创建一个 src/error/weather.error.ts 文件。...错误处理器可以完成这个功能,我们需要创建一个 src/filter/weather.filter.ts 文件,内容如下: //src/filter/weather.filter.ts import {...数据模拟 在编写代码时,我们的接口经常还处在无法使用的阶段,为了尽可能降低影响,可以使用模拟数据来代替。 比如我们的天气接口,就可以在本地测试环境模拟掉。...enableCondition 用于标识这个模拟在哪些场景下生效,比如我们上面的代码就仅在本地测试环境生效。...单元测试 Midway 默认使用 jest 作为基础的测试框架,一般我们的测试文件会放在根目录的 test 目录中,以 *.test.ts 作为后缀。 比如我们要测试编写的 /weather 接口。

    12910

    万字详文:彻底搞懂 Jest 单元测试框架

    Javascript 测试框架,用于创建、运行编写测试的 JavaScript 库。...Jest 作为 NPM 包发布,可以安装并运行在任何 JavaScript 项目中。Jest 是目前前端最流行的测试库之一。 测试意味着什么 在技术术语中,测试意味着检查我们的代码是否满足某些期望。...async (item) => {}) afterAllBlock.forEach(async (afterAll) => await afterAll()); 生成报告 当单测执行完后,可以收集成功捕捉错误的信息集.../src/index.ts,这里会有 normalize 填补初始化一些默认配置好的参数,它的默认参数在 packages/jest-config/src/Defaults.ts 文件中记录,比如:如果只运行.../src/index.ts,它会帮你缓存模块读取模块并触发执行。

    7.8K20

    用TypeScript编写React的最佳实践

    React 是一个 “用于构建用户界面的 JavaScript 库” ,而 TypeScript 是一个 “可编译为普通 JavaScriptJavaScript类型化超集” 。...在大多数情况下,它不会发出任何 JavaScript 输出。输出仍然类似于非 TypeScript React 项目。 TypeScript 可以与 React Webpack 一起使用吗?...文件 "noUnusedLocals": true, // 报告未使用的本地变量的错误 "noUnusedParameters": true, // 报告未使用参数的错误 "experimentalDecorators...在这里,我们将引用 React v16.8 以后的标准组件,这意味着使用 Hook 而不是的组件。 通常,一个基本的组件有很多需要关注的地方。...,则可以通过运行以下命令来实现: #yarn yarn add @types/jest #npm npm install @types/jest 这样,每当在项目中使用 Jest 时,就可以增加类型安全性

    4.7K51

    React背后的工具化体系

    Error Code机制实现生产环境错误追踪,DevTools侧面辅助bundle检查;Jest驱动单测,还通过格式化bundle来确认构建结果足够干净;最后通过npm发布新package 整个过程并不十分复杂...,但在一些细节上的考虑相当深入,例如Error Code System、双保险envification(dev/prod环境区分)、发布流程工具化 二.开发工具 CommonJS Module + Haste...: 与标准不和,接入标准生态中的工具时会面临适配问题 源码难读,不容易弄明白模块依赖关系 React 16去掉了大部分自定义的模块机制(ReactNative里还有一小部分),采用Node标准的相对路径引用...,性能上有提升余地 不利于实验性优化尝试:无法对散文件模块应用打包、压缩等优化手段 React 16调整了bundle形式: 不再提供CJS散文件,从npm拿到的就是构建好的,统一优化过的bundle...简言之,在prod bundle中把详细的报错信息替换成对应错误码,生产环境捕获到运行时错误就把错误码与上下文信息抛出来,再丢给错误码转换服务还原出完整错误信息。

    1.5K20

    深度讲解TS:这样学TS,迟早进大厂【21】:代码检查

    对于未定义的变量 myNane,tsc eslint 都可以检查出来。 由于 eslint 无法识别 myName 存在哪些方法,所以对于拼写错误的 toString 没有检查出来。...关闭、警告报错的含义如下: 关闭:禁用此规则 警告:代码检查时输出错误信息,但是不会影响到 exit code 报错:发现错误时,不仅会输出错误信息,而且 exit code 将被设为 1(一般 exit...code 不为 0 则表示执行出现错误) 检查一个 ts 文件§ 创建了配置文件之后,我们来创建一个 ts 文件看看是否能用 ESLint 去检查它。...prettier requirePragma: false, // 不需要自动在文件开头插入 @prettier insertPragma: false, // 使用默认的折行标准...§ 因为无法支持这种变量定义的检查。

    2.6K20

    我们用了一个周末,将 370 万行代码迁移到了 TypeScript

    TypeScript 目前已经成为 JavaScript 类型检查的客观标准,Stripe 已经把这次使用的 TypeScript 转换工具分享到 GitHub(https://github.com/stripe-archive...随着业务的发展,我们开始对 JS 代码进行类型检查以提高产品质量可靠性。2016 年,我们率先采用了 Flow——这是 Facebook 当时专门开发的 JavaScript 类型检查系统。...我们还向 codemod 中添加二次检查,希望进一步减少生成代码中的错误,同时使用 TypeScript 的 @ts-expect-error 注释来标记这些错误。...毕竟除了 TypeScript 对项目本体的检查之外,我们还得更新 ESLint、Jest、Webpack、Metro 等负责处理源代码的其他工具。 这里出现了一个特别的痛点:Jest 快照测试。...Jest 生成的快照文件中,会包含一条对快照生成文件的硬编码引用。由于 codemod 会给 TypeScript 文件生成.ts 或者.tsx 的扩展名,所以快照文件所引用的测试源将直接失效。

    74840

    检查JavaScript文件_TypeScript笔记18

    写在前面 TypeScript 的类型检查不仅限于.ts,还支持.js 但为了确保文件内容只含有标准JavaScript 代码,.js文件按照 ES 语法规范来检查,因而不允许出现 TypeScript...没有提供用来表示泛型参数的语法,因此未指定的类型参数都默认any类型 泛型在 JavaScript 中主要以 2 种形式出现: 继承泛型,创建 Promise 等(泛型、Promise 等定义在外部...d.ts里) 其它自定义泛型(通过 JSDoc 标明泛型类型) 例如: // 继承泛型 - .js import { Component } from 'react'; class MyComponent...)的泛型外,还有一种自定义的“JavaScript 泛型”: // .js 声明泛型,但不填类型参数 /** @type{Array} */ var x = []; x.push(1);...,访问就报错 构造函数等价于 另外,在 ES6 之前,JavaScript 里用构造函数代替,TypeScript 类型系统也能够“理解”这种模式(构造函数等价于 ES6 Class),成员赋值推断同样适用

    2.4K50
    领券