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

使用new时,Sinon存根不返回值

Sinon是一个JavaScript的测试框架,用于编写单元测试和集成测试。它提供了一组强大的工具和函数,用于模拟和存根函数的行为。

在Sinon中,使用sinon.stub()方法可以创建一个存根函数。存根函数可以用于替代被测试代码中的某个函数,并且可以控制它的行为。当使用sinon.stub()创建存根函数时,可以使用returns()方法来指定存根函数的返回值。

然而,在使用new关键字创建对象时,Sinon存根默认是不会返回值的。这是因为new关键字创建对象时,会自动返回一个新的对象实例,而不是存根函数的返回值。

如果需要在使用new关键字创建对象时,使Sinon存根返回一个特定的值,可以使用returns()方法来指定返回值。例如:

代码语言:javascript
复制
const stub = sinon.stub().returns('mockValue');
const result = new stub();
console.log(result); // 输出: 'mockValue'

在上述示例中,stub存根函数被创建,并使用returns()方法指定了返回值为'mockValue'。然后,通过使用new关键字创建对象时,存根函数会返回指定的值。

需要注意的是,Sinon存根不会影响被测试代码中的实际对象的构造函数。它只是用于替代构造函数的返回值。

对于Sinon存根的更多信息和用法,请参考腾讯云的Sinon文档:Sinon文档

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

相关·内容

Go: 命名返回值使用, return携带还是携带?

在Go语言中,命名返回值提供了一种声明函数返回值的方式,它可以增加代码的可读性和灵活性。但是,在使用命名返回值,return语句是否应该明确携带返回值,是一个常见的困惑。...带命名返回值的return 如果在函数中使用了命名返回值,你可以在return语句中明确指定返回的值,如下所示: func sum(a, b int) (result int) { result =...不带命名返回值的return 或者,你可以省略return语句中的返回值,让Go自动返回命名返回值的当前值: func sum(a, b int) (result int) { result = a...总结 命名返回值在Go语言中是一个强大的工具,但如何使用它没有固定的规则。选择是否在return语句中携带返回值取决于多个因素,包括代码的复杂性、团队的编程风格以及可读性和可维护性的需求。...希望这篇文章能帮助你解决关于Go语言中命名返回值使用的困惑。

26830

【Qt】使用QPalette设置QPlainTextEdit颜色生效

【Qt】使用QPalette设置QPlainTextEdit颜色生效 Qt5.9 C++开发指南 源代码 使用QPalette设置QPlainTextEdit颜色生效 解决方法 参考资料 Qt5.9...使用QPalette设置QPlainTextEdit颜色生效 练习2.2 可视化UI设计的示例程序sample2_2,第32页的编写一个设置QPlainTextEdit的文本编辑框txtEdit...的字体颜色使用QPalette调色板设置QPlainTextEdit的文本编辑框的字体颜色没有生效,具体槽函数代码如下: void QWDialog::setTextFontColor() {...在实际使用时,如果使用了样式表设置了QPlainTextEdit文本编辑框的颜色,那么再使用QPalette设置QPlainTextEdit颜色生效,以样式表的为准。...参考资料 https://doc.qt.io/qt-5/qwidget.html#palette-prop 【Qt】使用QPalette设置按钮颜色生效

2.3K20

Java避坑指南:使用ExecutorCompletionService处理任务,而处理返回值,导致OOM

---- 使用ExecutorCompletionService出现OOM的场景 ---- 使用java.util.concurrent.ExecutorCompletionService异步处理任务...使用ExecutorCompletionService为什么会出现OOM ---- ExecutorCompletionService 使用我们自定义的线程池去异步执行任务,任务执行完,会把任务执行的结果...(AbstractExecutorService) executor : null; this.completionQueue = new LinkedBlockingQueue>(); } 默认缓存任务执行结果的队列为队列不受限的 LinkedBlockingQueue: this.completionQueue = new LinkedBlockingQueue...限制在本地局部变量使用!也可预防!。 建议:不要使用ExecutorCompletionService,从javadoc上,这个类的实现并不是Doug Lea的作品。 ----

34020

提高代码质量——使用Jest和Sinon给已有的代码添加单元测试

在开发一些第三方依赖的库,我们也没有办法给第三方提供完整的代码质量报告。 现在,我们可以使用单元测试来提高自己的代码质量。...Jest配置 安装依赖包 需要使用Jest,首先你需要进行安装,执行以下命令: npm install jest -D 如果你的项目中存在.babelrc文件(使用了babel 6),不论你测试的代码是否通过...需要使用Sinon.js,我们首先需要进行安装: npm install sinon -D 配置完成后,需要在使用的地方进行引入,如下所示: const sinon = require('sinon')...; 在我的项目中,主要是使用Sinon.js来模拟HTTP请求。...在本章中,我们总结了如下问题来进行介绍,希望大家再遇到相同问题能够快速解决: 如何统计Jest单元测试覆盖率 如何设置单元测试文件不使用本地的babel配置 如何设置单元测试文件使用本地的babel配置

3.7K00

iOS_单元测试三之OCMock使用

的类方法及其子类无法存根或验证 10.7、无法验证 NSObject 上的方法 10.8、无法验证核心 Apple 类中的私有方法 10.9、运行后验证不能使用延迟 10.10、测试中使用多线程 11、...测试就会失败 [strictPerson mo_className]; [strictPerson addChilden:nil]; 8、观察者模拟 Observer mocks 从OCMock 3.8开始推荐使用观察者模拟...如果仔细协调,可能会导致意外行为或crash。...在某些情况下,可以对方法进行存根,然后对其进行验证。 当方法在子类中被覆盖,可以使用运行后验证。...在某些情况下,可以对方法进行存根,然后对其进行验证。 10.9、运行后验证不能使用延迟 目前无法验证具有延迟的方法。这目前只能使用下面在严格模拟和期望中描述的expect-run-verify方法。

3.1K20

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

为了可以方便执行单元测试,可以加一个npm scripts,在package.json的scripts中加入如下语句,表示使用mocha去执行test文件夹下的js测试: "scripts":{ "...test": "mocha test/**/*.js" } 复制代码 在test中建立一个js文件,在文件的中引入这些工具,为了连接sinon 和 chai,要使用sinon-chai const chai...但是使用assert.throws的时候,要用一个函数包装要测试的代码: it(`navigateTo的入参类型必须为object`, ()=>{ let newRouter = new VictRouter...(badFn, 'this.commonDirectFn is not a function') // 再把包装后的函数传入throws }) 复制代码 使用sinon模拟函数 如果需要模拟一个函数...,可以用sinon去模拟,使用方法:sinon.fake(),并且课已通过这个sinon的called方法判断函数是否被执行。

2.4K20

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

目前,有许许多多的测试框架都提供了模拟HTTP请求相关的一些流程功能,我们在这边文章中将会讲到的,就是我们在上一篇关于单元测试的博客提高代码质量——使用Jest和Sinon给已有的代码添加单元测试中提到的...Sinon中引用的HTTP模拟框架nise。...nise的设计思路是怎么样的 nise的API接口与使用方法 想要了解nise的设计思路,我们就需要先看下nise的使用方法。...而我们在进行HTTP相关测试,参数是由我们传入的,因此不需要进行验证。所以我们最终需要验证的其实是callback中的处理逻辑和结果。因此,我们可以通过以下一个示例来看下它如何与业务代码进行结合。...附录 Sinon.js nise 我folk的nise

2.5K10

Vue 测试速成班

测试运行器 对于新的 Vue 项目,添加测试的最简单方法是使用 Vue CLI[2]。在生成项目(执行 vue create myapp),你必须手动选择单元测试和 E2E 测试。 ?...当需要引入某个组件进行测试,我们可以以相对路径引用 ../../../src/components/Footer.vue 或使用别名 @,路径开头的 @ 符号表示对源文件夹 src 的引用。...当使用组件的 store ,我们必须将局部 Vue 实例和 store 实例传递给 mount 函数。...在运行时更改实现称为 mocking,我们将使用 Sinon[7] 这一 mocking 框架来实现。...我们没有为 commit 方法指定返回值,所以它将返回一个空值。axios.post 将返回一个 promise,该 promise 被解析为带有 body 属性的对象。

2.7K10

react-router v6使用createHashHistory进行history.push,url改变页面渲染

问题描述 在我使用history库的createHashHistory创建history对象使用history.push进行页面跳转的时候,url 变化,但是页面没有渲染。...(可参考:: react-router-dom v6 组件外使用路由跳转) 因为太麻烦,没有采用。 最终使用了react-router-dom中的useNavigate进行页面跳转。...navigate("/"); navigate的使用方法可以参考博客:react-router-dom 在hook中的使用 v6 和 v5的对比 需要注意的是:,useNavigate方法只能在函数式组件中使用..., 在类组件中是不能够使用hooks的。...③创建组件,函数式组件只需调用函数即可创建组件,而类组件必须先实例化一个对象,然后通过这个实例化对象调用render函数来创建组件 ④类组件是用生命周期钩子函数来实现业务逻辑的,而函数式组件使用react

3.9K20

RPC框架的实现原理,及RPC架构组件详解

:RPC框架的实现原理,及RPC架构组件详解 RPC的由来 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条紊的演进...高并发架构系列:RPC框架的实现原理,调用全过程,及RPC架构组件 从服务提供者的角度看:当提供者服务启动,需要自动向注册中心注册服务; 当提供者服务停止,需要向注册中心注销服务; 提供者需要定时向注册中心发送心跳...从调用者的角度看:调用者启动订阅注册中心的消息并从注册中心获取提供者的地址; 当有提供者上线或者下线,注册中心会告知到调用者; 调用者下线,取消订阅。...4、服务调用 B机器进行本地调用(通过代理Proxy)之后得到了返回值,此时还需要再把返回值发送回A机器,同样也需要经过序列化操作,然后再经过网络传输将二进制数据发送回A机器,而当A机器接收到这些返回值之后...(反序列化操作) 5、服务端存根(server stub)根据解码结果调用本地的服务进行相关处理 6、本地服务执行具体业务逻辑并将处理结果返回给服务端存根(server stub) 7、服务端存根(server

75510

eclipse+webservice开发实例

使用浏览器打开的话使用如下地址:http://127.0.0.1:19189/wse/wsexplorer/wsexplorer.jsp?... };   // 指定plus方法返回值的数据类型的Class对象           Class[] classes = new Class[] { float.class };   // 调用plus...本例子的客户端采用stub方式,而是一种实现通用的调用方式,不需要任何客户端存根即可访问服务。只需要指定对于的web servce地址、操作名、参数和函数返回类型即可。...该例子最大的不同和优势表现在客户端的调用方式,或者说是发起服务调用的方式,虽然比起客户端stub存根的方式,代码稍多,但是这种方式统一,不需要生产stub存根代码,解决了客户端有很多类的问题。... Object[] { "xuwei" };   // 指定sayHelloToPerson方法返回值的数据类型的Class对象           Class[] classes = new Class

1.4K40
领券