如何在单元测试中的请求之间更改 $httpBackend when[method] 语句?

2024-05-27

在我的测试中,我启动一些模型数据并模拟响应:

beforeEach(function(){
   var re = new RegExp(/^http\:\/\/.+?\/users-online\/(.+)$/);
   $httpBackend.whenGET(re).respond({id:12345, usersOnline:5000});
});      

it('should find 5000 users in channel 12345', function(){
    expect( UsersOnlineService.data.usersOnline).toEqual( 50000);
});

然后在下一个测试语句中说我想要通道的更新值。每个人都离开了,假设这会触发其他行为,所以我需要模拟第二个请求,以便我可以测试该行为。

添加$httpBackend.whenGET到下一个it语句不会覆盖beforeEach价值。它似乎使用原始模拟值:

it('should find 0 users in channel 12345', function(){
    $httpBackend.whenGET(re).respond({id:12345, usersOnline:0});
    expect( UsersOnlineService.data.usersOnline).toEqual( 50000); //fails
});

如果我在没有 beforeEach 的情况下这样做,两者都会失败并出现通常的“unexpectedGet”错误。

it('should find 5000 users in channel 12345', function(){
     var re = new RegExp(/^http\:\/\/.+?\/users-online\/(.+)$/);
     $httpBackend.whenGET(re).respond({id:12345, usersOnline:5000});
    expect( UsersOnlineService.data.usersOnline).toEqual( 50000); //fails
});

it('should find 0 users in channel 12345', function(){
      var re = new RegExp(/^http\:\/\/.+?\/users-online\/(.+)$/);
     $httpBackend.whenGET(re).respond({id:12345, usersOnline:0});
    expect( UsersOnlineService.data.usersOnline).toEqual( 0); //fails
});

如何在请求之间调整模拟数据?

我也尝试过:

  • 夹着一个beforeEach之间it声明
  • 设置一个.respond( to a fakeResponse多变的。然后改变fakeResponse每个值it陈述。

重置期望()

执行

afterEach($httpBackend.resetExpectations);

文档

重置所有请求期望,但保留所有后端定义。通常,当您想要重用 $httpBackend 模拟的同一实例时,您可以在多阶段测试期间调用 resetExpectations。

文档来源:https://docs.angularjs.org/api/ngMock/service/ https://docs.angularjs.org/api/ngMock/service/$http后端

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

如何在单元测试中的请求之间更改 $httpBackend when[method] 语句? 的相关文章

随机推荐

  • 更改 Spring Web 应用程序的默认会话超时

    我必须测试一个由 spring 和 jsp 编写的 Web 应用程序 应用程序的默认会话超时为 30 分钟 我想减少会话超时 为此 我改变了web xml文件输入tomcatInstallationLocation conf 但这不起作用
  • 文本溢出上的点样式:省略号

    是否可以对点进行样式设置text overflow ellipsis 一个例子是将省略号加粗 如 Lorem Ips 灵感来自这个答案 https stackoverflow com a 21861334 3244925 这是一种设置省略号
  • 使用变量在 r 中像 aes_string 一样选择轴

    我试图提供一个带有列名的变量来创建一个plotly图表 类似于ggplot2 aes string 不知怎的 我被困住了 plot ly iris x Sepal Length y Sepal Width works as expected
  • 保留表单数据的策略(在选项卡/浏览器关闭时)

    我的任务管理应用程序有一个问题 用户偶尔会关闭浏览器 选项卡 并且他们输入的信息会消失 因为他们不小心关闭了浏览器 选项卡 导致他们输入的文本丢失 有些可以花半个小时输入文字 所以我必须提供一个解决方案 我有几个想法 但希望了解最好的解决方
  • REPLACE MYSql 中的新行字符不起作用

    我执行了以下查询 由于某种原因它没有替换数据库中的换行符 它说 Rows matches 1 但没有变化 有什么问题吗 mysql gt UPDATE aboutme SET abouttext REPLACE abouttext n WH
  • 使用动态对象组配置 gradle 插件扩展的正确方法

    我正在尝试编写自己的 gradle 插件 它需要能够配置一组对象 这些对象的数量以及它们的名称取决于用户 用于创建具有高级可定制性的自定义 gradle 插件的 doco 相当差 它提到project container 方法来做这种事情
  • 要实现 XML 可序列化,从 ICollection 继承的类型必须具有 Add 的实现

    我有来自现有项目的 CSLA 1 x 框架 对象 我试图在新的 Net 4 0 项目中使用它 这些对象正在生产中使用 如果没有 2 组对象 我确实无法将它们转换为 2 x 或 EF 在我的 c webservice 中 当我尝试运行它时 我
  • 从命令行发布 Azure 项目

    我有一个 Azure Web 角色项目 我可以使用 Visual Studio 的内置向导成功发布它 但我们希望自动化该过程 如何使用 MSbuild 或任何其他命令行工具发布 Azure WebRole 您可能还想创建一个控制台应用程序
  • 在 Excel 中的文件夹内的所有文件上添加一列

    我在一个文件夹内有 250 个不同的 excel 文件 具有相同的布局 其中包含列A to F 我需要在列上添加新列G 传统的方法是打开每个文件并在以下位置添加新列G 有没有使用 Excel 宏或任何其他工具的简单过程来完成此任务 这个链接
  • 使用运算符 j 操作 zsh 数组

    以下代码摘自here http eseth org 2010 git in zsh html function vi git st local ahead behind remote local a gitstatus Are we on
  • 将二维整数作为 Readonly/const 存储在单独的类中,同时保持非公开

    这是我在使用这个地方作为我的 去处 以获取关于什么有效 无效 为什么等的一般意见之后的第一个问题 那么让我们试试这个 由于我的经验有限 我一直在尝试寻找更好的方法来创建固定数据字段 我可以在整个程序中引用这些字段 例如我反复显示的最终用户可
  • cvs rtag:[07:34:59]等待cvsuser的锁定

    当我执行 rtag 时 进程相当慢 并显示消息 cvs rtag 07 34 59 waiting for cvsuser s lock in 是什么原因导致这个问题以及如何解决这个问题 提前致谢 通过 Google 搜索 cvs wait
  • IOS - 如何创建具有模糊背景的 Facebook 反应栏?

    虽然这周可能不会复制 Facebook 的某些设计 但我希望能够设计我自己的下面的反应指示器视图版本 我有三个UIImageViews 排列在与上面相同的位置 问题是 与 Facebook 不同 背景颜色可能会改变 即位于UIBlurEff
  • 是否可以从同一网络上的另一台计算机访问 Azure 模拟器?

    我正在运行带有 VS 2010 SP1 和 Windows Azure SDK 1 5 的 Windows 7 x64 我希望能够在连接到同一网络的 iPhone 上调试 Web 应用程序 以缩短调试周期 IIS 正在这台计算机上运行 并且
  • mysql - 有什么方法可以帮助使用另一个索引进行全文搜索?

    假设我有一个 文章 表 其中包含以下列 article text fulltext indexed author id indexed 现在我想搜索特定作者撰写的文章中出现的术语 所以像这样 select from articles whe
  • 高度在 IOS (iphone) 上无法正常工作

    我已经创建了this https codepen io salman15 project live DWbWpo Codepen 上的网站 在尝试使其响应所有平台时 我遇到了问题 看起来单个 div 覆盖了整个页面 仅在 IOS 上 并且并
  • 大厅 CI 和内部版本号

    我将从 Jenkins 转向使用 using广场CI运行我的 Sauce 实验室 e2e 测试 Sauce 实验室将具有相同内部版本号字符串的测试分组在一起 name Chrome XS browserName chrome tunnelI
  • Android 模拟器问题

    当我启动模拟器时 我遇到很多问题 错误 HttpConnectionApp emulator 5554 disconnected Cancelling net paxcel http HttpConnectionApp activity l
  • 隐藏树视图列表中的节点。在 C# 中

    我正在使用 VS 2005 C 正在处理一个未完成的 WinForm 我已将 XML 解析为树视图列表 但遇到了一些问题 我想知道是否有一种方法可以隐藏 过滤 删除名称中包含 this text 的某个节点 而不必依赖文本框 这就是我对这个
  • 如何在单元测试中的请求之间更改 $httpBackend when[method] 语句?

    在我的测试中 我启动一些模型数据并模拟响应 beforeEach function var re new RegExp http users online httpBackend whenGET re respond id 12345 us