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

使用精确参数调用Sinon js检查存根

Sinon.js是一个用于JavaScript的测试工具库,用于创建和管理测试中的存根(stubs)、模拟(mocks)和间谍(spies)。它可以帮助开发人员在单元测试中模拟函数的行为,以便更好地控制测试环境。

使用精确参数调用Sinon.js检查存根的过程如下:

  1. 首先,确保已经安装了Sinon.js库,并在测试文件中引入它。
  2. 创建一个存根对象,可以是一个函数或者一个对象的方法。例如,我们可以创建一个名为"stubFunction"的存根函数:
代码语言:txt
复制
const stubFunction = sinon.stub();
  1. 使用存根函数时,可以通过调用stubFunction.withArgs()方法来指定精确的参数。例如,我们可以指定存根函数只有在参数为1和2时才返回特定的值:
代码语言:txt
复制
stubFunction.withArgs(1, 2).returns('stubbed value');
  1. 在测试中调用被测函数,并使用存根函数替代其中的某些功能。例如,我们可以调用一个名为"myFunction"的函数,并在其中使用存根函数:
代码语言:txt
复制
function myFunction(a, b) {
  // ...
  const result = stubFunction(a, b);
  // ...
  return result;
}

// 调用myFunction,并使用存根函数替代其中的某些功能
const output = myFunction(1, 2);
  1. 最后,使用Sinon.js提供的断言方法来验证存根函数的调用情况。例如,我们可以使用stubFunction.calledWith()方法来验证存根函数是否被精确参数调用过:
代码语言:txt
复制
sinon.assert.calledWith(stubFunction, 1, 2);

这样,我们就可以使用Sinon.js的精确参数调用功能来检查存根的使用情况。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 云函数(Serverless):腾讯云云函数是一种事件驱动的无服务器计算服务,可帮助开发人员在云端运行代码,无需关心服务器管理。详情请参考:腾讯云云函数
  • 云开发(CloudBase):腾讯云云开发是一站式后端云服务,提供了云函数、数据库、存储等功能,帮助开发者快速搭建和部署应用。详情请参考:腾讯云云开发
  • API 网关(API Gateway):腾讯云 API 网关是一种高性能、高可靠、可扩展的 API 托管服务,可帮助开发者构建和管理 API 接口。详情请参考:腾讯云 API 网关

请注意,以上推荐的腾讯云产品仅供参考,具体选择应根据实际需求进行评估和决策。

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

相关·内容

单元测试初体验

使用的工具介绍 使用 JavaScript 测试执行过程管理工具 Karma Karma是一个基于 Node.js 的 JavaScript 测试执行过程管理工具(Test Runner)。...对于数组和字符串,它检查 length 属性,对于对象,它检查可枚举属性的数量 expect([]).to.be.empty expect('').to.be.empty expect({}).to.be.empty...sinon.js 中 spy 主要用来监视函数的调用情况,sinon 对待监视的函数进行 wrap 包装,因此可以通过它清楚的知道,该函数被调用过几次,传入什么参数返回什么结果,甚至是抛出的异常情况。...stub 使用 stub 来嵌入或者直接替换掉一些代码,来达到隔离的目的。stub 是代码的一部分。在运行时用 stub 替换真正代码,忽略调用代码的原有实现。...它拥有 spy 提供的所有功能,区别在于它会完全替换掉目标函数,而不只是记录函数的调用信息。换句话说,当使用 spy 时,原函数还会继续执行,但使用 stub 时就不会。

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

    { "presets": ["@babel/preset-env"] } 然后给mocha命令添加参数,指定使用babel进行编译: mocha --require @babel/register...如果觉得命令行参数太多太长,mocha允许我们使用配置文件的方式来进行传参: module.exports = { require: ["@babel/polyfill", "@babel/register..."], // 运行单测代码时需要使用babel解析 recursive: true, // 深度遍历指定目录 spec: 'test/**/*.test.js', // 运行test目录下的所有单测代码...调用了 exampleFunction 后,我们可以通过检查 getTime 方法的 calledOnce 属性来判断 getTime 有没有被成功调用。...我们也可以让替换函数主动抛出错误,来测试调用它的函数是否可以正确处理异常: it('测试db操作失败', async function(){ const stub = sinon.stub(db,

    3.9K20

    如何模拟一个XMLHttpRequest请求用于单元测试——nise源码阅读与分析

    目前,有许许多多的测试框架都提供了模拟HTTP请求相关的一些流程功能,我们在这边文章中将会讲到的,就是我们在上一篇关于单元测试的博客提高代码质量——使用Jest和Sinon给已有的代码添加单元测试中提到的...Sinon中引用的HTTP模拟框架nise。...它是Sinon.js的一部分,用来处理HTTP相关测试问题。 该库提供了替换原生的XHR对象和Server相关的接口,但是我们在本文中只介绍关于XHR部分,也就是浏览器中的XHR对象的替换。...,使用fake XHR对象替换全局,并返回一个带有restore方法的fake XHR对象构造函数 }; 我们在使用时,只需调用userFakeXMLHttpRequest方法,即可将原生的XHR对象替换成...附录 Sinon.js nise 我folk的nise

    2.5K10

    Vue 测试速成班

    : 单元/集成测试的工具库[4]•chai: 断言库 Chai[5] 从现在开始,单元/集成测试文件可以使用 *.spec.js 后缀写在 tests/unit 目录中。...测试的目录不是硬连线的,你可以用下面的命令行参数来修改它: vue-cli-service test:unit --recursive 'src/**/*.spec.js' recursive 参数告诉测试运行器依据后面的通配符模式来搜索测试文件...第一个参数表示调用哪个 action;第二个参数作为参数传递给 action。我们可以随时通过 state 属性检查当前状态。...在运行时更改实现称为 mocking,我们将使用 Sinon[7] 这一 mocking 框架来实现。...在函数内部,我们等待 onModify 方法完成,然后断言伪 commit 方法是否被调用并传入了 post 调用返回的参数。 10. 浏览器 从代码的角度来看,我们已经测试到了应用程序的各个方面。

    2.7K10

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

    官网:www.chaijs.com/ github: github.com/chaijs/chai assert库方法文档: www.chaijs.com/api/assert/… sinon.js sinon...再执行以下安装语句: npm install sinon moncha chai sinon-chai --save-dev 复制代码 建立一个test文件夹,可以把写测试用例的Js放在这个文件夹中,...为了可以方便执行单元测试,可以加一个npm scripts,在package.json的scripts中加入如下语句,表示使用mocha去执行test文件夹下的js测试: "scripts":{ "...test": "mocha test/**/*.js" } 复制代码 在test中建立一个js文件,在文件的中引入这些工具,为了连接sinon 和 chai,要使用sinon-chai const chai...sinon模拟函数 如果需要模拟一个函数,可以用sinon去模拟,使用方法:sinon.fake(),并且课已通过这个sinon的called方法判断函数是否被执行。

    2.5K20

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

    Backbone.js / Require.js 技术栈回顾 Require.js 模块化 ? 首先说 Require.js,在没有 webpack 的日子里,这是最常见的模块化管理工具。.../fakeAppFacade'; import Model from "models/CardBinding"; 用 sinon 拦截异步请求 搞定了异步请求的地址,自然要拦截真正的请求; // backbone.js...Backbone 中的请求,包括 Backbone.sync / model.fetch() 等, 本质上还是调用的 jQuery 中的 $.ajax 方法(默认情况下),也就是传统的 xhr 方式,使用...另一个难点在于,Backbone.View 的 constructor / initialize “构造函数”中,并不能接受自定义的 props 参数。...$el.find('.multi').length).toEqual(0); }); 对方法调用的测试 自然还是用 sinon 来做: it('应正确响应事件回调并加载子模板', function()

    3.5K10

    分享7个专业级的JavaScript测试库,提高你的工作效率

    2、Sinon 这是一个独立的库,用于在JavaScript测试中创建测试替身(侦查、桩和模拟)。它通过提供工具来验证函数调用、控制行为等,帮助你编写隔离的测试。...在Node.js环境中,你可以使用npm(Node包管理器)来安装: npm install --save-dev testdouble 接下来,你可以在你的单元测试中使用TestDouble。...(mockObject.method1()); // 输出: 'hello' TestDouble.js 还提供了许多其他用于创建和管理测试替身的功能,例如验证函数是否被调用,替换模块等。...你可以在集成测试中使用这个库,作为你的测试套件的一部分来拦截真实的请求,或者你可以使用它来构建自定义的HTTP代理,捕获、检查和/或以任何你喜欢的方式重写HTTP。你可以点击这里查看这个库。...https://github.com/httptoolkit/mockttp 使用示例 Mockttp是一个强大的库,它允许你在JavaScript中拦截、检查和修改HTTP请求和响应。

    25920

    对 React 组件进行单元测试

    单元测试简介 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。 简单来说,单元就是人为规定的最小的被测功能模块。...、传入什么参数、返回什么结果,甚至是抛出的异常情况。...是一个会在npm脚本中被调用的普通 JS 文件,而非XXX.json或.XXXrc的形式,所以 nodejs 的各自操作都可以进行,比如引入 fs 进行预处理读写等,灵活性非常高,可以很好的兼容各种项目...一般使用 Enzyme 中的 mount 或 shallow 方法,将目标组件转化为一个 ReactWrapper对象,并在测试中调用其各种方法: import Enzyme,{ mount } from...虽然 Jest 本身也有一些实现 spy 等的手段,但 sinon 使用起来更加方便。 III.

    4.3K40

    通信协议

    会话层本质上是传输层的增强版本,它提供对话控制,还提供了同步功能,对于长时间的传输过程非常有用,它允许用户在传输过程中插入若干检查点,如果传输崩溃,只需要回退到最近的一个检查点(跟打游戏死了后回到前一个检查点一样哈哈...3、远程过程调用   当机器A上的进程调用机器B上的进程时,A上的调用进程被挂起,而B上的被调用进程开始执行。调用方可以通过使用参数将信息传送给被调用方,然后可以通过传回的结果得到信息。...调用前的堆栈如下图左,进行了调用调用方先把参数反序压入堆栈,即最后一个参数最先压入。在read操作完后,将返回值放入某个寄存器中,移出返回地址,并将控制权交回调用方。...随后调用方将参数从堆栈移出,使堆栈还原到初始的状态。 ? 3.2 客户与服务器存根程序   RPC背后隐含的思想是尽量使远程过程调用具有与本地调用相同的形式。...(5)服务器存根参数提取出来,然后调用服务器 (6)服务器执行要求的操作,操作完后将结果返回给服务器存根 (7)服务器存根将结果打包成一个消息,然后调用本地操作系统 (8)服务器操作系统将含有结果的消息发送回客户端操作系统

    66420

    iOS_单元测试三之OCMock使用

    该Block可以从调用的对象中读取参数,并可以设置返回值。...arguments stub方法,可以响应非对象参数调用(可以响应参数没有通过的调用:无论是对象参数 or 非对象参数) OCMStub([partialMockPerson setAge:0])....,所以会测试失败 7.3、存根和期望 Stub actions and expect 也可以在期望的情况下使用andReturn、andThrow等。...在某些情况下,可以对方法进行存根,然后对其进行验证。 当方法在子类中被覆盖时,可以使用运行后验证。...在某些情况下,可以对方法进行存根,然后对其进行验证。 10.9、运行后验证不能使用延迟 目前无法验证具有延迟的方法。这目前只能使用下面在严格模拟和期望中描述的expect-run-verify方法。

    3.2K20

    Dubbo第二篇

    启动时检查 Dubbo 缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止 Spring 初始化完成,以便上线时,能及早发现问题 我们可以关闭检查,比如测试时,有些服务不关心,或者出现了循环依赖...重试次数 调用失败后的重试次数,不包含第一次失败的调用,默认2次,在注解内可用retries= ‘2’ 设置 有些调用是幂等的,所以可以重试、有些非幂等设置为0不重试 @Reference(retries...本地存根 在进行远程过程调用的时候,我们可能需要先进行参数校验或者本地缓存,那么此时可以利用本地存根了 5.1 消费者方 在消费者这边要创建本地存根,而该存根需要一个有参构造 public class...高可用 这里本来都不想写了,因为官方写得很清楚,还详细有实例 注册中心宕机 若之前调用过,则会有本地缓存不影响使用,但不能更新服务信息 或者在@Service(url=“127.0.0.1:20882...消费者调用失败而返回空

    49110

    【单元测试】--工具与环境

    测试运行器: JUnit 允许使用不同的测试运行器,扩展测试框架的功能,例如 Parameterized 用于参数化测试。...多种断言库支持: Mocha 不限定使用特定的断言库,开发人员可以选择使用自己喜欢的库,如 Chai、Should.js、或 Node.js 内置的 assert。...你应该能够看到测试的执行结果,并检查测试报告以查看失败的测试。 6....创建被测对象: 在单元测试中,创建被测对象并将存根对象注入其中,以便在测试中使用。在上面的示例中,MyClass 接受一个 IDatabaseAccess 接口的参数,并将其注入。 4....配置存根对象的行为: 使用 Setup 方法来配置存根对象的行为。你可以指定当调用存根对象的某个方法时应返回什么值。 5.

    35750

    React 16 - 生态:UI 库、Next.js、测试、开发调试工具

    适合企业场景 # Material UI 样式更加美观,适合 2C 场景 # 选择因素 组件库是否齐全 样式风格是否符合企业业务需求 API 设计是否便捷灵活 技术支持是否完善 开发是否活跃 # Next.js...# 同构应用 在服务端执行虚拟 DOM 渲染,此时前端和服务端渲染层是同一套代码 # 创建同构应用 创建 Next.js 应用程序 (opens new window) 创建页面 页面就是 pages...,可以使用其他 React 组件 页面会针对性打包,仅包含其引入的组件 使用 Link 实现同构路由 使用 next/link 定义链接 点击链接时页面不会刷新 使用 prefetch 预加载目标资源...环境运行和测试 Redux 隔离了状态管理,可以进行纯数据层单元测试 # 相关工具 Jest:单元测试框架 JS DOM:浏览器环境的 Node.js 模拟 Enzyme:React 组件渲染和测试...nock:模拟 HTTP 请求 sinon:函数模拟和调用跟踪 istanbul:单元测试覆盖率 # 开发调试工具 ESLint Prettier React DevTool Redux DevTool

    1.5K30

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

    Solr:提供包括字段搜索、布尔查询、短语查询、模糊查询、语法检查、自动填全等高级实时搜索功能。 缓      存 注意:缓存使用内存中存储文件拷贝,降低网络调用,提供更快的网络响应。...内存缓存 该技术大多数情况下使用服务器的内存,因此通常称为内存缓存。服务器的一部分内存用作缓存,存储降低应用网络调用所需的所有数据。...API 客户端 REST 在 REST 提出之前,API 使用远程过程调用(RPC)开发,类似于本地执行的代码。...REST 架构使用基本 HTTP 调用进行通信,避免了使用 COBRA、COM +,RPC 等复杂方式通信。在 REST 中,调用是基于消息的,依赖 HTTP 标准描述消息。...推荐阅读:下面资料分别介绍了如何使用 Sinon 和 Jasmine 实现 Mocking 测试: Sinon https://stackabuse.com/using-mocks-for-testing-in-javascript-with-sinon-js

    2.4K20
    领券