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

Sinon spy使用两个不同回调签名

Sinon是一个流行的JavaScript测试框架,它提供了各种测试工具和功能,其中包括Sinon spy(间谍)。

Sinon spy是一种测试工具,用于监视函数的调用情况,以便在测试中验证函数的行为。它可以用于前端开发、后端开发和软件测试等各种场景。

Sinon spy有两个不同的回调签名,分别是spy.callCountspy.calledWith

  1. spy.callCount回调签名用于检查函数被调用的次数。它返回一个数字,表示函数被调用的总次数。这对于验证函数是否按预期被调用了特定的次数非常有用。

示例代码:

代码语言:javascript
复制

const myFunc = sinon.spy();

myFunc();

myFunc();

console.log(myFunc.callCount); // 输出 2

代码语言:txt
复制

推荐的腾讯云相关产品:无

  1. spy.calledWith回调签名用于检查函数是否以特定的参数被调用。它接受一个或多个参数,并返回一个布尔值,表示函数是否以这些参数被调用过。

示例代码:

代码语言:javascript
复制

const myFunc = sinon.spy();

myFunc(1, 2);

myFunc(3, 4);

console.log(myFunc.calledWith(1, 2)); // 输出 true

console.log(myFunc.calledWith(5, 6)); // 输出 false

代码语言:txt
复制

推荐的腾讯云相关产品:无

总结:

Sinon spy是一个用于监视函数调用情况的测试工具,它有两个不同的回调签名:spy.callCount用于检查函数被调用的次数,spy.calledWith用于检查函数是否以特定的参数被调用。这些工具对于验证函数的行为在测试中非常有用。

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

相关·内容

小程序不同页面的异步,callback和promise的使用讲解

res) { } }) }, showData(dataList) { //.........做数据处理 }, 我们这样写其实也没什么不对,但是如果数据请求和使用是在两个不同的页面呢...然后在首页index.js里要使用这些数据,那么我们这么写就有问题了。下面就来教大家两种方式来很好的解决这个问题。 一,通过callback。 先看下代码,然后我再具体给大家讲解下原理。...把function方法作为一个参数传递进去的目的,就是为了下面的。 ? 我们这个callBack参数,可以在请求数据成功或者失败的时候作为一个方法调用。这样就可以把请求到的数据,传回去了。...好了,到这里我们两种不同页面的异步就给大家讲完了。...) { fail(res) } }) }) return promise; }, //第一种,通过callback的方式来实现

1.4K32

用 jest 单元测试改善老旧的 Backbone.js 项目

不同于提供整套方案的 Angular 的是, Backbone.js 提供了一个非常基础和自由的 MVC 框架结构,不仅可以用多种方式组织项目,也可以自由替换其中的某一部分。...Backbone 中的请求,包括 Backbone.sync / model.fetch() 等, 本质上还是调用的 jQuery 中的 $.ajax 方法(默认情况下),也就是传统的 xhr 方式,使用...$el.find('.multi').length).toEqual(0); }); 对方法调用的测试 自然还是用 sinon 来做: it('应正确响应事件并加载子模板', function()...= sinon.spy(); const spy2 = sinon.spy(); const ViewClass1 = CardPrivileges({ data:{...$el.find('.privileges>li:nth-of-type(2)>a').click(); expect(spy.callCount).toEqual(1); expect(spy2

3.4K10

前端自动化测试工具 overview

,基本上目前前端单元测试就在这两个库之间选了,下面是这两个库的区别,大家可以根据自己的需求进行选择: mocha: 优点: 终端显示友好 灵活,扩展性好 缺点: 自身集成度不高(没有断言,spy,...异步等),而且经常要配合Chai,Sinon等库使用 配置相对麻烦一点点 Jasmine: 优点: 集成度高,自带BBD,spy,方便的异步支持(2.0) 配置方便 缺点: 相对不太灵活 由于各种功能内建...两者功能覆盖范围粗略可以表示为: Jasmine(2.x) === Mocha + Chai + Sinon - mockserver PS: 个人实际使用后觉得Chai和Sinon毕竟是专门做特定功能的框架...,用 Mocha + Chai + Sinon 这种方式会想对舒爽一点。...断言方式 上面说到BDD,就是说测试要写的像自然语言一样,不同的断言方式就相当于不同的判断句的句式而已,现在普遍有下面三种断言方式: assert: assert.equal(something, someting

2.2K110

单元测试初体验

测试辅助工具 Sinon Sinon 是一个独立的 JavaScript 测试 spy, stub, mock库,没有依赖任何单元测试框架工程。...expect 和 should是 BDD 风格的,二者使用相同的链式语言来组织断言,但不同在于他们初始化断言的方式:expect 使用构造函数来创建断言对象实例,而 should 通过为 Object.prototype...API 介绍 辅助工具库 Sinon 主要有三个Api:spy, stub, mock spy 翻译过来的意思是 “监视”。...var spy = sinon.spy(orginObj, 'launch'); spy.restore(); 当 spy 使用完成后,切记把它恢复成原始函数,就像上边例子中最后一步那样。...它拥有 spy 提供的所有功能,区别在于它会完全替换掉目标函数,而不只是记录函数的调用信息。换句话说,当使用 spy 时,原函数还会继续执行,但使用 stub 时就不会。

1.5K20

前端自动化测试工具 overview

,基本上目前前端单元测试就在这两个库之间选了,下面是这两个库的区别,大家可以根据自己的需求进行选择: mocha: 优点: 终端显示友好 灵活,扩展性好 缺点: 自身集成度不高(没有断言,spy,...异步等),而且经常要配合Chai,Sinon等库使用 配置相对麻烦一点点 Jasmine: 优点: 集成度高,自带BBD,spy,方便的异步支持(2.0) 配置方便 缺点: 相对不太灵活 由于各种功能内建...两者功能覆盖范围粗略可以表示为: Jasmine(2.x) === Mocha + Chai + Sinon - mockserver PS: 个人实际使用后觉得Chai和Sinon毕竟是专门做特定功能的框架...,用 Mocha + Chai + Sinon 这种方式会想对舒爽一点。...断言方式 上面说到BDD,就是说测试要写的像自然语言一样,不同的断言方式就相当于不同的判断句的句式而已,现在普遍有下面三种断言方式: assert: assert.equal(something, someting

1.3K10

使用mocha编写node服务单元测试

函数内会包含由it定义的测试用例,用来测试该测试组的不同分支。 完整的单测至少应该包含正反方向测试,即测试函数的正常逻辑和异常逻辑。...可以看到上述代码定义了一个describe组来测试getResult函数的功能,里面有两个测试用例分别测试了入参正常和非法入参的情况。 而测试用例中如何来判断函数是否正常执行呢?.../util'; it('call example function once', function(){ const spyGetTime = sinon.spy(util, 'getTime')...而在测试用例开头我们使用 spy 方法监听了 util 的 getTime 方法。...除了calledOnce 属性之外,spy还在监听函数上挂载了很多监控属性,读者可以自行打印出来看看。 stub stub可以看做是spy的加强版,它不仅支持spy的各种收集行为,还能控制函数的行为。

3.9K20

对 React 组件进行单元测试

var spy = sinon.spy(MyComp.prototype, 'componentDidMount');...expect(spy.callCount).toEqual(1); stub...React 单元测试中用到的工具 Jest 不同于"传统的"(其实也没出现几年)的 jasmine / Mocha / Chai 等前端测试框架 -- Jest的使用更简单,并且提供了更高的集成度、更丰富的功能...它模拟了 jQuery 的 API,非常直观并且易于使用和学习,提供了一些与众不同的接口和几个方法来减少测试的样板代码,方便判断、操纵和遍历 React Components 的输出,并且减少了测试代码和实现代码之间的耦合...虽然 Jest 本身也有一些实现 spy 等的手段,但 sinon 使用起来更加方便。 III....; beforeEach(function() { jest.useFakeTimers(); spy = sinon.spy(Comp.prototype

4.2K40

前端测试驱动开发模式(TDD)快速入门

最近也在实践Tdd开发,和之前先开发,再自测的方向不同,这次的开发顺序是, 文档--->测试用例--->代码--->测试通过--->下一个测试用例。...test": "mocha test/**/*.js" } 复制代码 在test中建立一个js文件,在文件的中引入这些工具,为了连接sinon 和 chai,要使用sinon-chai const chai...VictRouter() assert.isFunction(newRouter.navigateTo) }) }) 复制代码 describe()表示测试的一个大范围,第一个参数是范围的名字,第二个是一个函数...,其中可以放单元测试代码 it()里写单元测试的代码,第一个参数还是这个测试的名字,第二个函数中放入单元测试代码 assert 就是断言代码执行后的结果是什么,比如这个例子中,因为要测试"实例化后存在...sinon模拟函数 如果需要模拟一个函数,可以用sinon去模拟,使用方法:sinon.fake(),并且课已通过这个sinon的called方法判断函数是否被执行。

2.4K20

2021 年 Node.js 开发人员学习路线图

Node.js 中涉及大量的异步编程处理,推荐掌握如下概念: 定时器(Timers) Promises 闭包(Closures) 事件循环(Event Loop) 异步编程(Async programming)和...(Callback):是特定任务执行完成后调用的函数,不影响其它代码的同时执行,避免了异步处理产生阻塞。鉴于 Node.js 中需处理大量的异步任务,因此无处不在。...是实现应用无缝快速执行的关键,其运作机制如下图所示: Buffer 类:设计用于处理原始二进制数据的 Node.js 类,操作 V8 引擎外分配的内存。...Mocha:为 Node 应用提供原始标准的单元测试框架,支持等异步操作,支持使用高度可扩展和自定义断言的 Promise。...推荐阅读:下面资料分别介绍了如何使用 Sinon 和 Jasmine 实现 Mocking 测试: Sinon https://stackabuse.com/using-mocks-for-testing-in-javascript-with-sinon-js

2.3K20

怎样编写更好的 JavaScript 代码

async 和 await 很长一段时间里,异步、事件驱动的是 JS 开发中不可避免的一部分: 传统的 makeHttpRequest('google.com', function (err,...为了解决问题,JS 中增加了一个新概念 “Promise”。Promise 允许你编写异步逻辑,同时避免以前基于的代码嵌套问题的困扰。...console.log(result); }).catch(function (err) { console.log('Oh boy, an error'); }); Promise 优于的最大优点是可读性和可链接性...通常匿名函数作为或事件钩子传递。...如果这是 C 代码,我们将会进行不同的讨论,因为使用情况不同,编译器可以使用循环实现相当多的技巧。在 JavaScript 中,只有绝对必要时才应使用传统的 for 循环。

1.3K30

2021年Node.js开发人员学习路线图

Node.js 中涉及大量的异步编程处理,推荐掌握如下概念: 定时器(Timers) Promises 闭包(Closures) 事件循环(Event Loop) 异步编程(Async programming)和...(Callback):是特定任务执行完成后调用的函数,不影响其它代码的同时执行,避免了异步处理产生阻塞。鉴于 Node.js 中需处理大量的异步任务,因此无处不在。...是实现应用无缝快速执行的关键,其运作机制如下图所示: ? Buffer 类:设计用于处理原始二进制数据的 Node.js 类,操作 V8 引擎外分配的内存。...Mocha:为 Node 应用提供原始标准的单元测试框架,支持等异步操作,支持使用高度可扩展和自定义断言的 Promise。...推荐阅读: 下面资料分别介绍了如何使用 Sinon 和 Jasmine 实现 Mocking 测试: Sinon https://stackabuse.com/using-mocks-for-testing-in-javascript-with-sinon-js

2.6K20

使用Enzyme测试React(Native)组件|洞见

特别是当浏览器中的Web应用越来越庞大的时候,与在后端将大型单体应用拆分成微服务架构的最佳实践一样,前端应用也可以被拆分成不同的页面和特性。 ?...it('simulates click events', () => { const onButtonClick = sinon.spy() const wrapper = shallow(...则是一个可以用来Mock和Stub数据代码的第三方测试工具库,当我们需要检查一个组件当中某个特定的函数是否被调用时,我们可以使用sinon.spy()方法监视所传入该组件作为prop的onButtonClick...方法,然后再通过wrapper的simulate方法模拟一个Click事件,最终验证这个被spy的onButtonClick函数是否被调用。...与许多其他基于快照的测试框架不同,Enzyme允许开发者在不进行设备渲染的情况下做测试,从而实现速度更快、粒度更小的测试。

2.3K40

#Android单元测试学习总结「建议收藏」

验证行为 verify(T mock)函数的使用 使用`when(T methodCall)`函数 使用`thenAnswer`为做测试桩 使用`doCallRealMethod()`函数来调用某个方法的真实实现方法...使用`doNothing()`函数是为了设置void函数什么也不做 使用`doAnswer()`函数测试void函数的 需要使用doReturn函数代替thenReturn的情况 使用`doThrow...(10); //设置抛出的异常 when(mock.someMethod("some arg")).thenThrow(new RuntimeException()); //你可以对不同作用的连续的方法打测试桩...) does nothing, so the list still contains "one" spy.clear(); 使用doAnswer()函数测试void函数的 当你想要测试一个无返回值的函数时...假设你有一个void方法有多个参数,当你想指定执行某个时,使用thenAnswer很难实现了,如果使用doAnswer()将非常简单,示例代码如下: MyCallback callback =

4.9K20

【Web技术】639- Web前端单元测试到底要怎么写?

这个应用场景从 UI 层来讲主要由两个部分组成: 工具栏,包含刷新按钮、关键字搜索框 表格展示,采用分页的形式浏览 看到这里有的童鞋可能会说:切!...功能库 nock ,模拟 HTTP Server 如果有童鞋对上面这些使用和配置不熟的话,直接看官方文档吧,比任何教程都写的好。...我们在写测试用例时尽量保持用例的单一职责,不要覆盖太多不同的业务范围。测试用例数量可以有很多个,但每个都不应该很复杂。...对于 reducer,我们主要测试两个方面: 对于未知的 action.type ,是否能返回当前状态。 对于每个业务 type ,是否都返回了经过正确处理的状态。...测试首次加载时数据列表为空是否发起加载数据请求 */ test('when componentDidMount and data is empty, should getData', () => { sinon.spy

3K30

前端单元测试总结_javascript单元测试

通过编写测试用例,可以做到一次编写,多次运行 解释性:测试用例用于测试接口、模块的重要性,那么在测试用例中就会涉及如何使用这些API。...intern: 看官方介绍该测试框架功能极其全面,似乎囊括了业内跟测试相关的所有功能 2.2 断言库 chai:应该是目前组流行的断言库了,支持TDD(assert)、BDD(expect、should)两个风格的断言库...sinon.js: 目前使用最多的mock库,将其分为spies、stub、fake XMLHttpRequest、Fake server、Fake time几种,根据不同的场景进行选择。...expect not equla actual ) { throw new Error(text); } } function fn () { ... } function spy...return proxy; } var proxy = spy(fn); // 得到一个mock函数 4.如何写单元测试用例 4.1原则 测试代码时,只考虑测试,不考虑内部实现 数据尽量模拟现实

1.5K20
领券