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

Jest自定义匹配器:在匹配器内部未定义"this“

Jest是一个流行的JavaScript测试框架,用于编写和运行单元测试。它提供了许多内置的匹配器(matchers),用于断言测试结果是否符合预期。然而,有时候我们可能需要自定义匹配器来满足特定的测试需求。

在Jest中,自定义匹配器是通过扩展expect对象的原型来实现的。我们可以使用expect.extend方法来定义自己的匹配器。下面是一个示例:

代码语言:txt
复制
expect.extend({
  toBeDivisibleBy(received, divisor) {
    const pass = received % divisor === 0;
    if (pass) {
      return {
        message: () =>
          `expected ${received} not to be divisible by ${divisor}`,
        pass: true,
      };
    } else {
      return {
        message: () =>
          `expected ${received} to be divisible by ${divisor}`,
        pass: false,
      };
    }
  },
});

上述示例中,我们定义了一个名为toBeDivisibleBy的自定义匹配器,用于判断一个数是否可以被另一个数整除。该匹配器接受两个参数:被测试的值(received)和除数(divisor)。根据被测试的值是否可以被除数整除,我们返回一个包含pass和message属性的对象,用于表示测试结果。

使用自定义匹配器时,我们可以像使用内置匹配器一样进行断言。例如:

代码语言:txt
复制
test('16 is divisible by 4', () => {
  expect(16).toBeDivisibleBy(4);
});

test('25 is not divisible by 3', () => {
  expect(25).not.toBeDivisibleBy(3);
});

在上述示例中,我们分别测试了16是否可以被4整除以及25是否不可以被3整除。

自定义匹配器可以帮助我们更好地组织和表达测试断言,使测试代码更加清晰和可读。然而,需要注意的是,在自定义匹配器中无法直接访问到测试用例中的this对象,因为自定义匹配器是作为expect对象的方法被调用的,而不是作为测试用例函数的方法。

对于Jest自定义匹配器的更多信息和示例,你可以参考腾讯云的Jest文档:Jest自定义匹配器

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

相关·内容

Jest + React Testing Library 单测总结

2.2 Jest配器 Jest配器 expect 断言时,用来检查值是否满足一定的条件。...完整的 Jest配器可以 这里 查看,下面也列举一些常用的匹配器: 匹配器 说明 .toBe(value) 相等性,检查规则为 === + Object.is .toEqual(value) 相等性...2.3 Jest Mock 查看官方文档的时候,Jest配器中还有一类匹配器专门用来检查 Jest Mock 函数的。...2.3.1 jest.fn() 通过 jest.fn(implementation) 可以创建 mock 函数。如果没有定义函数内部的实现,mock 函数会返回 undefined。...3.4 RTL + Jest配器  2.2 Jest配器 中可以看到 Jest 提供了一些匹配器,然而 Jest 自己提供的匹配器很难去实现组件测试的一些特殊条件,所以 RTL 自己实现了一个

4.5K20

2017年高频率的互联网校园招聘面试题

也可以用内部类的方式创建 ? 模板方法模式 父类中实现一个算法不变的部分,并将可变的行为留给子类来实现。...分为两种:类的适配器模式、对象的适配器模式 Android 里的 ListView 和 RecyclerView的setAdapter()方法就是使用了适配器模式。...赛马 25马,速度都不同,但每匹马的速度都是定值。现在只有5条赛道,无法计时,即每赛一场最多只能知道5马的相对快慢。问最少赛几场可以找出25马中速度最快的前3名?...按照第6场比赛的名词把前面5场比赛所在的组命名为 A、B、C、D、E 组,即 A 组的冠军是第6场第一名,B 组的冠军是第二名 … 分析第2名和第3名的可能性,如果确定有多于3马比某马快,那它可以被淘汰了...取这5马进行第7场比赛 -所以,一共需要7场比赛

1K20

Sparse R-CNN升级版 | Dynamic Sparse R-CNN使用ResNet50也能达到47.2AP

本文中,假设了基于Transformer的检测器中一对一的标签分配是次优的,并探索了一种基于OTA的Sparse R-CNN的多对一配的动态标签分配。...4实验 4.1 消融实验 1、不同匹配器的影响 如表3所示,具有固定k值(k=2,3)的OTA匹配器与Baseline相比,AP的提升率为0.9% AP。...动态k估计中使用q=8的OTA匹配器增加了1.1% AP,这证明了使用动态k的有效性。 units增加策略进一步将AP提高到46.7% AP,说明这种简单的设计是有效的。...此外,具有q=8和units增加策略的OTA匹配器 AP75和APs都增加了近3个百分点。可见动态多对一配方案产生了更多样化的预测框选项,以匹配Ground truth。...值得注意的是,表4中的所有结果都优于一对一配(45.0%),这验证了动态多对一配方案的有效性。

1.7K30

设计模式日记 Adapter

muggle 源码日记之适配器模式(Adapter) 适配器模式(Adapter Pattern) :将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper...适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。...模式结构 适配器模式包含如下角色: Target:目标抽象类 Adapter:适配器类 Adaptee:适配者类 Client:客户类 源码导读 我们都知道springMVC就用到了适配器模式,那他是怎么适配呢...DispatcherServlte会根据 handlerMapping传过来的 controller与已经注册好了的 HandlerAdapter一一配,看哪一种 HandlerAdapter是支持该...对于适配器模式类名一般都以 Adapter结尾

22910

react生态下jest单元测试

一:jest框架搭建 1.本地创建一个目录jest_practice 2.使用编辑器VScode打开目录,紧接着终端中打开,执行npm init 图片 3.执行以下命令: 注意:这里我们使用cnpm...如果尝试对这些对象进行快照,它们将强制快照在每次运行时失败. //2.Jest允许为任何属性提供非对称匹配器。...写入或测试快照之前,将检查这些匹配器,然后将其保存到快照文件而不是接收到的值 it('will check the matchers and pass', () => { const user...写入或测试快照之前,将检查这些匹配器,然后将其保存到快照文件而不是接收到的值 it('will check the matchers and pass', () => { const user =...'); }); test('测试jest.fn()内部实现', () => { let mockFn = jest.fn((num1, num2) => { return num1 * num2

2.2K20

JavaScript测试教程-part 2:引入 Enzyme 并测试 React 组件

我们在这里用了 Jest,不过 Enzyme 也可以与 Mocha 和 Chai 之类的库一起使用。 Enzyme 基础 Enzyme 是一个库,用于测试时处理你的 React 组件。...这里要注意一个非常重要的点:即使我们用了 Enzyme,但测试运行程序仍然是 Jest。由于我们用的是 expect 函数,因此可以使用各种可供调用的匹配器函数。我已经课程的第一部分中提到了它们。...第一个测试中,我们使用了 toContainReact 函数,这是一个自定义配器函数。它是 enzyme-matchers 库的一部分。...要将其与 Jest 一起使用,请安装 jest-enzyme 包。 1npm install jest-enzyme 最后要做的是将其导入 setupTests 文件中。...第二个测试中,我们组件上调用了 find 函数。这要归功于 shallow 函数返回 ShallowWrapper,它是渲染输出的包装器。它有一组可供调用的函数。

1.4K50

Android开发笔记(八十六)几个特殊的类

配器实际使用时都要派生重写,所以sdk里的适配器类都是抽象类或接口,包括: 1、列表适配器,如ListAdapter、SpinnerAdapter、BaseAdapter等等,详见《Android...(二十一)横幅轮播页Banner》; 自定义处理对象 该情况中,抽象类里的个别方法需要开发者来实现,具体的类包括: 1、SQLite操作类SQLiteOpenHelper,需要开发者实现onCreate...Java允许类中再定义类,这种在其它类内部定义的类就叫做内部类。...类中内部类 类中内部内部定义,它与上级类的成员方法平级;之所以单独形成一个内部类,是因为类中的功能可以单独管理;但它又不新建一个java文件,是因为内部类与上级类存在一定程度的耦合。...匿名内部类主要用于代码行很少的自定义类,实际开发中,常见的匿名内部类多是由OnClickListener或者Runnable派生出来。

59520

自动化测试 Jest 的使用总结基础篇

他可以创建测试用例,执行测试,自身还有驱动和mock,且用起来也是很方便,正如 jest 的官网这样描述 jestJest is a delightful JavaScript Testing Framework...验证参数是否正确 jest 提供了多种匹配器可以对不同的数据类型做匹配,比如:array,string,object 等等,而它们的匹配器分别是 toContain ,toMatch,toEqual。...同时, jest 也支持做不匹配的校验,也就是反向的校验。下面就是一些不同的匹配器。 简单类型的校验; 使用 tobe() 匹配器做简单类型的校验,校验结果是否正确。...但是我本地上测试的时候,把这个东东给去掉之后,测试还是可以通过。 可能是某一些场景下。...那么,执行所有的 test 之后,也只是会执行一次的 beforeAll and afterAll。 条件执行钩子 顾名思义,就是选什么情况下才触发钩子函数,按需使用。

2.7K111

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

什么是Jest 测试意味着什么 我怎么知道要测试什么 测试块,断言和匹配器 如何实现测试块 如何实现断言和匹配器 CLI 和配置 模拟 怎么模拟一个函数 执行环境 作用域隔离 V8 虚拟机 运行单测回调...测试块,断言和匹配器 我们将创建一个简单的 Javascript 函数代码,用于 2 个数字的加法,并为其编写相应的基于 Jest 的测试 const sum = (a, b) => a + b; 现在...toBe 是一个匹配器,用于检查期望值,如果不符合预期结果则应该抛出异常。...模拟 复杂的测试场景,我们一定绕不开一个 Jest 术语:模拟(mock) Jest 文档中,我们可以找到 Jest 对模拟有以下描述:”模拟函数通过抹去函数的实际实现、捕获对函数的调用,以及在这些调用中传递的参数...测试框架的核心部分,以上部分基本实现了测试块、断言、匹配器、CLI配置、函数模拟、使用虚拟机及作用域和生命周期钩子函数等,我们可以在此基础上,丰富断言方法,匹配器和支持参数配置,当然实际 Jest 的实现会更复杂

7.6K20

编写接口请求库单元测试与 E2E 测试的思考

首先我采用的是适配器模式,也就是不依赖任何一个第三方请求库,你可以用 axios、ky、umi-request、fetch 任何一个库,只需要编写一个符合接口标准的适配器。这里以 axios 为例。...坏处就是需要编写适配器,对新手来说可能不太友好,但是可以提供默认适配器去缓解这个问题。其次是适配器中方法返回类型是一定的,如错误的使用 axios 的 interceptor 可能会导致出现问题。...这里用 axios 为默认适配器,那么就是测试中 mock 掉 axios 的请求方法(axios.get, axios.post, ...)因为 axios 的逻辑你是不需要关心也不需要测试的。...我已 Express 、 Jest 为例。我的想法是直接用 Express 托管一系列接口。当然不是手动去启动一个服务,而是 Express 直接跑 Jest 测试中。...因为固定端口 Jest 并行测试中容易被占用。 测试用例也比较好写,只要按照传统前后端接口请求去写就可以了。

1K40

《面试季》经典面试题-Spring篇(一)

4、前端控制器请求返回的处理器对象转发给处理器适配器(HandlerAdapter)   5、处理器适配器通过适配处理调用具体的处理器(Handler)既执行实际的后端逻辑处理代码,生成结果。   ...6、处理器适配器将Handler执行的结果ModelAndView返回给前端控制器   7、前端控制器将返回的ModelAndView转发给ViewResolver解析成View,并将View对象返回给前端控制器...属于Sping家族中的一个模块,是一个web框架,通过前端控制器、处理器映射器、处理器适配器、视图解析器等使得开发web应用变得更容易。...六: @Resource装配顺序   1、如果同时指定name和type,则从容器中查找唯一配的bean装配,找不到则抛出异常   2、如果指定name属性,则从容器中查找名称匹配的bean装配,找不到则抛出异常...  3、如果指定type属性,则从容器中查找类型唯一配的bean装配,找不到或者找到多个抛出 异常。

97510
领券