是否可以在一次测试中对方法进行两次存根以返回不同的结果?

2024-06-28

我想重新存根someHandler.getStatus,但我得到了TypeError: Attempted to wrap getStatus which is already wrapped ..

it('is a test', function() {

  sandbox.stub(someHandler, 'getStatus', function(callback) {
    callback(null, {
      value: 1
    });
  });

  sandbox.stub(someOtherHandler, 'doSomething', function(callback) {
    callback(null);
  });

  sandbox.stub(someHandler, 'getStatus', function(callback) {
    callback(null, {
      value: 0
    });
  });
});

Sinon 有一个很好的 API 来处理多个调用(stub.onCall(n);)到相同的存根方法。

示例来自存根 API 文档 http://sinonjs.org/docs/#stubs:

"test should stub method differently on consecutive calls": function () {
    var callback = sinon.stub();
    callback.onCall(0).returns(1);
    callback.onCall(1).returns(2);
    callback.returns(3);

    callback(); // Returns 1
    callback(); // Returns 2
    callback(); // All following calls return 3
}

您还可以使用onFirstCall() , onSecondCall(), and onThirdCall().

我们在测试中广泛使用这种方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以在一次测试中对方法进行两次存根以返回不同的结果? 的相关文章

  • 使用 ReactJS 旋转图像预览

    我正在尝试使用 ReactJS 旋转图像的预览 因此 我首先允许渲染预览的上传功能 然后在用户点击上传之前 我希望他们可以选择根据自己的喜好旋转图像 这是我用来预览图像的 class ImageUpload extends React Co
  • 如何使用角度在垫选择嵌套值中包含过滤器

    我正在使用带有嵌套下拉菜单的有角材料 下拉值以父级和子级为基础嵌套 我面临两个问题 自动建议不起作用 如果我输入父名称或其关联的子名称 则必须以展开模式过滤并显示特定的父视图 如果我展开第一个父视图并尝试展开第二个父视图 则第一个父视图应在
  • 如何使用 angular2 在客户端生成 rsa 密钥对?

    我需要知道如何使用 angular2 在客户端生成 rsa 密钥对 我需要生成私钥 公钥对并将私钥保存到数据库中 并希望在客户端内使用公钥 我怎样才能实现这个 我找到了这个https www npmjs com package genera
  • Google Closure 和生成的 getter/setter

    我正在尝试让 KineticJS 与 Google Closure Compiler 一起使用 然而 KineticJS 根据变量的名称生成它的 getter 和 setter 像这样的事情 add getter and setter me
  • 范围滑块 javascript 以小时和分钟为单位

    我试图分别以小时和分钟为单位显示滑块的值 我对 JS 还很陌生 并且仍在尝试了解它是如何工作的 到目前为止 我所拥有的是一个工作滑块 其最大值为 1440 24 小时内的分钟 在 JS 中 我尝试将其划分为小时和分钟 并使用 innerHt
  • 系统js语法错误,IE11

    我有一个 Angular 2 应用程序可以在 Firefox 和 Chrome 中工作 但在 IE 中却没有那么多工作 根据我的堆栈跟踪 我的 System js 设置似乎存在问题 这是我在网络控制台中看到的错误描述 Error Syste
  • iPhone Web 应用程序禁用缓存

    我使用 PHP 构建了一个 iPhone 网络应用程序 主 也是唯一 页面包括苹果移动网络应用程序支持 and 苹果触摸全屏元标记 以便在添加到主屏幕后可以全屏运行 然而 似乎每次我从主屏幕启动应用程序时 都会使用页面的缓存版本而不是刷新页
  • JavaScript:所有标准内置对象实际上都是构造函数吗?

    我最近一直在研究 JavaScript 在花了几个月的时间之后 我仍然对一些内部结构感到困惑 具体来说 我试图理解所谓的标准内置对象 https developer mozilla org en US docs Web JavaScript
  • 如何告诉 Sonar 使用我的可靠报告来获取单元测试结果

    我们有一个 Jenkins 作业 其中包含一堆 javascript 文件 我们通过 grunt 构建项目 并在构建结束时运行 JSCover 来运行单元测试并收集代码覆盖率 这一切都有效 我们得到了一个不错的 LCOV 文件 并且在 ta
  • 停止倒数计时器 Javascript onClick

    给出以下代码 myButton02 click function myButton02 hide counter animate width toggle var count 65 var counter setInterval timer
  • 如何让机器人状态显示为“手机在线”

    我看到 NotSoBot 的状态为在线在移动 https i stack imgur com IiF4k png 有没有办法可以在discord js 中做到这一点 我知道这已经很旧了 但更简单的方法是将其添加到定义客户端 机器人的位置 c
  • 为什么这个 fs.readFile 循环没有将其结果推送到我的数组? [复制]

    这个问题在这里已经有答案了 usr bin env node var fs require fs async require async program require commander program version 0 0 1 usa
  • Array.from 的时间复杂度

    时间复杂度是多少Array from 例如 const set new Set set add car set add cat set add dog console log Array from set time complexity o
  • 如何在 Electron 中使窗口大小响应。 (打开应用程序时)

    我最近开始在 Electron 上制作一个应用程序 我想让窗口具有响应能力 例如 如果我在不同的屏幕上打开应用程序 它应该根据屏幕尺寸以全尺寸打开 我的代码 app on ready gt const htmlPath path join
  • Django 管理中的自定义依赖下拉菜单

    我有一个按阶段模型的项目外键 我很难在 Django 管理页面中创建依赖的下拉列表 我想当用户从该项目的 项目下拉 阶段选择一个项目时 在第二个下拉菜单中显示 实现这一目标的最佳方法是什么 如果下拉列表根据其父级的值来过滤项目 那就太好了
  • 链接index.html client.js 和 server.js

    我从 Node js 开始 我的第一个程序已经遇到了问题 下面是我正在使用的代码 索引 html
  • ag-Grid 中的行格式

    我们需要有条件地将行文本设置为粗体 目前它仅适用于单个单元格 但我们需要在所有列单元格上应用文本粗体 应用格式设置后 isBold 列必须隐藏 删除 此列仅用于格式化 如何应用文本缩进 10px isBold 列包含真实值的第一列的 有可能
  • 使用 _.extend() 进行 JavaScript 继承

    有什么区别 Employee prototype Object create Person prototype and extend Employee prototype Person prototype 两者都给出相似的结果 输出 但下划
  • 什么是标志变量?

    最近我遇到了标志变量 但我不知道它们的作用 我不太确定何时使用标志变量以及如何使用它 我用 Google 搜索了它 但没有任何与我的上下文 JavaScript 相关的具体示例 标记变量的定义和使用 http www javascriptk
  • 如何防止外部 CSS 添加和覆盖 ReactJS 组件样式

    我有一个自定义的 ReactJS 组件 我想以某种方式设置样式 并将其作为插件提供给许多不同的网站 但是 当网站使用全局样式 Twitter bootstrap 或其他 css 框架 时 它会添加并覆盖我的组件的样式 例如 全局 css l

随机推荐

  • NSZombieEnabled 完全隐藏 EXC_BAD_ACCESS 错误

    因此 我有一个 UIView 的子类 当我经历一组特定的条件时 在 iPad 而不是 iPhone 或模拟器上运行 仅首次登录 它开始导致 EXC BAD ACCESS 错误 当 UIView 子类从池中自动释放时 即池正在释放 而不是当我
  • 更改EditText.setError()背景和错误消息android

    我想更改无效电子邮件地址的错误消息的文本和背景颜色 我尝试过 但我的短信不显示任何内容 这是我的代码 public class TextboxValidation validating email address public static
  • 使用 SerialPort 禁用 EOF (0x1A) [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我知道还有
  • 当视图切换到其他浏览器选项卡时,网页 javascript 的行为有所不同

    抱歉我写标题时的英文不好 我已经尽力了 直播站点 http tt fbcwinterretreat org http tt fbcwinterretreat org 请注意 为了更好地了解发生的情况 我建议您降低窗口高度 问题是 如果您一直
  • 如何重置/清除文件输入

    我从输入类型 文件重置图像文件时遇到了这个问题 这就是场景 我设置了一个图像 然后单击 取消 按钮 这意味着它被重置 然后我将再次设置相同的图像 它不会设置 我不知道为什么 但我认为这是一个错误 这是我用于重置图像 表单的代码 resetI
  • 为什么我收到此错误:无效的挂钩调用。钩子只能在函数组件的主体内部调用/

    错误 无效的挂钩调用 钩子只能在函数组件的主体内部调用 发生这种情况可能是由于以下原因之一 您的 React 和渲染器版本可能不匹配 例如 React DOM 你可能违反了 Hooks 规则 您可能在同一个应用程序中拥有多个 React 副
  • 编写 MySQL 查询以获得所需结果

    我正在使用 MySQL 数据库 风险因素有四种类型 严重 高 中 低 表包含如下数据 id uaid attribute value time risk factor 1 1234 Edge Exist 16123 NONE 2 1234
  • IntelliJ IDEA - 折叠 for 循环和/或 if/else 语句

    我希望 IntelliJ 有一种让我折叠的方式for循环和if else声明 但是 我似乎无法找到自动执行此操作的方法 我知道你可以使用 region and endregion注释 或者您可以使用 Ctrl Shift 句号手动执行此操作
  • Fork/Join 杀死兄弟姐妹/分支

    我正在使用 Fork Join 递归地搜索问题的解决方案 1 1 1 1 2 1 1 1 1 1 2 1 2 1 1 2 2 现在假设我在 1 2 1 中找到了解决方案 有没有办法取消 forkjoin 池中的所有其他进程 如果我知道 1
  • 如何存储和访问 Twitter Fabric 登录会话 (iOS/Swift)?

    我可以使用以下 Twitter Fabric 代码通过我的应用程序登录 Twitter let logInButton TWTRLogInButton logInCompletion session TWTRSession error NS
  • 如何测试与 ModelState 一起使用的 ActionFilterAttribute?

    正如卡齐 曼祖尔 拉希德 Kazi Manzur Ra shid 以及其他人 在这篇博文 http weblogs asp net rashid archive 2009 04 01 asp net mvc best practices p
  • Delphi应用程序中子菜单位置错误

    我的应用程序是用delphi 编写的 由于某种原因 主菜单的行为不再像昨天那样 我可能在不知情的情况下触及了某些属性 现在 当我单击带有子项的菜单项时 尽管箭头位于右侧 但子菜单始终向左打开 是什么原因以及如何恢复 正如问题评论中所揭示的那
  • 无需 sudo 连接本地 MySQL 服务器

    这个命令 mysql uroot p 给出以下错误 ERROR 2002 HY000 Can t connect to local MySQL server through socket var lib mysql mysql sock 1
  • NodeJS 需要全局模块/包

    我正在尝试全局安装然后使用forever and forever monitor像这样 npm install g forever forever monitor 我看到了通常的输出以及将文件复制到全局路径的操作 但是如果我尝试requir
  • Gridstack.js 从 JSON 获取位置

    我现在正在与Gridstack js https github com troolee gridstack js这对我有好处 但是 总是有一个但是 有人知道我如何定位 JSON 数组中定义的 grid stack item 吗 HTML 示
  • android 动态复选框

    我正在尝试动态地将复选框添加到 LinearLayout 中 我使用了以下代码 private class ListAdapters extends ArrayAdapter
  • 调整 GIF 动画大小,pil/imagemagick,python

    我想使用 python 和 PIL 或 PythonMagick 更改 GIF 动画图像的大小 我找不到解决方案 PIL 和缩略图方法适用于 jpg 和 png 但不适用于 gif ImageMagick 有命令 mogrify conve
  • 装饰器更改返回类型时键入函数

    如何正确编写返回类型被装饰器修改的函数的类型 简单的例子 def example decorator fn def wrapper data res fn data return join res return wrapper exampl
  • Google 表单上的动态/随机问题

    我有一组 100 个问题 其中包含用户必须回答的多项选择答案 我希望用户每次打开 Google 表单时都会随机收到一组 5 或 10 个问题 并存储用户对这 5 10 个问题的回答 这些问题是基于反馈的 因此我不需要收集用户数据等 每次用户
  • 是否可以在一次测试中对方法进行两次存根以返回不同的结果?

    我想重新存根someHandler getStatus 但我得到了TypeError Attempted to wrap getStatus which is already wrapped it is a test function sa