期望从可观察的下一个处理程序中抛出错误,用 Jasmine 测试 Angular

2023-12-30

在 Angular 应用程序中,有一个具有以下方法的控制器

onClick(): void {
    this.http
        .get('some/endpoint')
        .subscribe(
            (response) => {
                const editUrl = this.service.composeUrl(response);

                if (!editUrl) {
                    // want to test this error is thrown, when editUrl is null
                    throw Error('Cannot construct valid URL');
                }

                // do something else
            },
            () => {
                // request clean up
            }
        );
}

我想编写 Jasmine 测试来验证,如果editUrl无法由响应组成,将引发错误。

it('when call is successful but editUrl cannot be constructed, then error is thrown', () => {
    mockHttp.get = jasmine
            .createSpy()
            .and.returnValue(of({}));


    mockService.composeUrl= jasmine
            .createSpy()
            .and.returnValue(null);

    expect(() => { component.onClick() }).toThrowError();
});

我的测试失败了:

错误:预期函数会抛出错误。

但我也在浏览器控制台中看到抛出了错误Uncaught Error: Cannot construct valid URL

我认为问题在于,在 http observable 的下一个处理程序中抛出了错误,并且以某种方式耗尽了 jasmine 上下文。

我可以通过将匿名下一个处理程序提取到命名函数中并直接测试该函数来修复它,但我更喜欢使用匿名箭头函数进行订阅。


None

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

期望从可观察的下一个处理程序中抛出错误,用 Jasmine 测试 Angular 的相关文章

  • 如何重置使用 JavaScript 更改的 CSS 属性?

    我的导航按钮的宽度从 100px 增加到 150px 当鼠标悬停在 nav li hover width 150px 但是使用 javascript 我已经做到了 无论选择哪个选项 宽度都将继续为 150px 当选择每个选项时 它会使其他选
  • 单元测试:创建“模拟”请求来模拟 MVC 页面请求

    如何为我的 asp net mvc 应用程序创建模拟请求以进行单元测试 我有什么选择 我在我的操作中使用 FormsCollection 因此我也可以模拟表单输入数据 您只需创建 FormCollection 的新实例并在其中添加数据即可
  • 使用 jQuery/JS 打开时使
    标签的内容具有动画效果

    我只想要 HTML5 的内容details标记为 滑行 动画打开 而不是仅仅弹出打开 立即出现 这可以用 jQuery Javascript 实现吗 Fiddle http jsfiddle net 9h4Hq HTML
  • 如何防止 Iframe 在与浏览器交互后弄乱浏览器的历史记录?

    因此 就我而言 我使用 Iframe 将 Grafana 附加到我的页面 这为我提供了漂亮且易于使用的图表 可以注意到 每次在图表上进行放大或缩小 使用鼠标单击 交互后 Grafana 的 Iframe 都会在我的 Angular 页面上触
  • 如何监听 jQuery AJAX 请求?

    以下两种实现 ajaxRequest 1 2 的方法应该是等效的 话说回来 为什么验证回调已执行的单元测试 3 在 1 中成功而在 2 中失败 我应该如何重写测试 3 来监视 2 中的成功回调 如果我尝试stub jQuery ajax使用
  • 在requestAnimationFrame中使用clearRect不显示动画

    我正在尝试在 HTML5 画布上做一个简单的 javascript 动画 现在我的画布是分层的 这样当我收到鼠标事件时 背景层不会改变 但带有头像的顶层会移动 如果我使用 requestAnimationFrame 并且不清除屏幕 我会看到
  • Jquery/Javascript 上传和下载文件,无需后端

    是否可以在没有后端服务器的情况下在 JavaScript 函数中下载和上传文件 我需要导出和导入由 JavaScript 函数生成的 XML 我想创建按钮 保存 xml 来保存文件 但我不知道是否可行 另一方面 我希望将 XML 文件直接上
  • 跟踪用户何时点击浏览器上的后退按钮

    是否可以检测用户何时单击浏览器的后退按钮 我有一个 Ajax 应用程序 如果我可以检测到用户何时单击后退按钮 我可以显示适当的数据 任何使用 PHP JavaScript 的解决方案都是优选的 任何语言的解决方案都可以 只需要我可以翻译成
  • 将div设置为隐藏,延时后可见

    我试图在 X 时间后 也许甚至在随机时间之后 但现在我们只做固定时间 在黑色背景上出现一个黄色方块 function initialSetup if document getElementById yellow null document
  • 如何在react-native中获取Text组件的onPress值

    我是一名新的 React Native 开发人员 我想使用 onPress 获取 Text 组件的值并将其传递给函数
  • 为什么 Google 测试会出现段错误?

    我是 Google Test 的新手 正在尝试提供的示例 我的问题是 当我引入失败并设置GTEST BREAK ON FAILURE 1 或使用命令行选项 GTest 将出现段错误 我正在考虑这个例子 https code google c
  • 如何使用tampermonkey模拟react应用程序中的点击?

    我正在尝试使用 Tampermonkey 脚本模拟对 React 元素的点击 不幸的是 由于 React 有自己的影子 DOM 所以天真的方法使用document querySelector 不工作 我遇到了一些需要修改 React 组件本
  • HTML 离线应用程序缓存,列出下载的文件

    作为我正在构建的离线 Web 应用程序的加载屏幕的一部分 使用缓存清单 http developer apple com library safari documentation iPhone Conceptual SafariJSData
  • FireFox 中的自动滚动

    我的应用程序是实时聊天 我有一个 Div 来包装消息 每条消息都是一个 div 所以 在几条消息之后 我的 DOM 看起来像这样 div div Message number two div div div div
  • 如何获取给定 DOM 元素的所有定义的 CSS 选择器?

    如何使用 jQuery 获取给定 DOM 元素的所有定义的 CSS 选择器 定义后 我的意思是在应用于任何样式表的所有 CSS 选择器document 在某种程度上 这类似于 FireBug 实现的功能 其中显示所选 DOM 元素的所有应用
  • 在 vue.js 中访问数组对象属性

    给定以下数组vue js packageMaps Object packageMap 0 Object Id 16 PackageType flag list ProductCode F BannerBase packageMap 1 Ob
  • 条件在反应本机生产中失败,但在开发中有效

    我创建了一个反应本机应用程序 我需要通过它进行比较 如果属实 就会执行死刑 问题是 该条件适用于 React Native 开发模式 而不适用于 React Native 生产版本 我使用 firebase 作为数据库 也使用 redux
  • AES 128 CBC 蒙特卡罗测试

    我正在 AES 128 CBC 上执行 MCT 如中所述http csrc nist gov groups STM cavp documents aes AESAVS pdf http csrc nist gov groups STM ca
  • 如何在 pg-promise 中设置模式

    我正在搜索的文档pg 承诺 https github com vitaly t pg promise特别是在创建客户端时 但我无法找到设置连接中使用的默认架构的选项 它始终使用public架构 我该如何设置 通常 为数据库或角色设置默认架构
  • 如何获取浏览器视口中当前显示的内容

    如何获取当前正在显示长文档的哪一部分的指示 例如 如果我的 html 包含 1 000 行 1 2 3 9991000 并且用户位于显示第 500 行的中间附近 那么我想得到 500 n501 n502 或类似的内容 显然 大多数场景都会比

随机推荐

  • 对具有相同第一列值的 2D numpy 数组元素进行分组

    我有一个像这样的 2D numpy 数组 569 897 570 898 570 900 571 901 571 905 572 906 我想要要分组的第一列中具有相等值的元素按照以下方式一起 569 897 570 898 570 900
  • 将查询结果追加到表中

    当我尝试通过 API 插入查询作业 将查询结果附加到另一个表 时 我现在遇到了一些问题 查看文档 这似乎可以通过插入查询作业 设置目标表并将 writeDisposition 设置为 WRITE APPEND 来实现 如下所示 config
  • 是否有推荐的方法在使用 GWT 的 MVP 中使用观察者模式?

    我正在考虑使用 GWT 根据 MVP 模式实现用户界面 但对如何进行有疑问 这些是我的 一些 目标 演示者对 UI 技术一无所知 即没有使用 com google 中的任何内容 该视图对演示者一无所知 还不确定我是否希望它与模型无关 模型对
  • Collection.toArray() java.lang.ClassCastException

    import java util HashMap import java util Map public class Main public static void main String args Map
  • 如何用简单的代码修复“下标超出范围”错误

    我开始使用 VBA for Dummies 书学习如何编写 VBA 代码 我从书中复制并粘贴了这段代码 但它给了我一个错误 你能帮忙吗 Sub ShowValue Contents Worksheets Sheet1 Range A1 Va
  • 缩放标签文本与标签尺寸一致

    寻找一种调整大小的方法Labels文字随着尺寸的变化而变化Label 即标签尺寸是否应增加50 那么文本的大小也应该增加大约50 有很多文章可以调整文本以完全适合页面的大小Label 这不适合我想要的 我已经有了这个的工作版本 不知何故 我
  • 在node.js中模拟数据库?

    我如何在我的node js应用程序中模拟数据库 在本例中使用mongodb作为博客 REST API 的后端 当然 我可以将数据库设置为特定的testing database 但我仍然会保存数据 不仅测试我的代码 还会测试数据库 所以我实际
  • 绝对定位的元素隐藏其前面的透明元素

    我有三个彼此相邻的块元素 第一个和最后一个是透明的 中间的是绝对定位的 box width 300px height 300px box1 background yellow opacity 0 5 box2 background red
  • 从 iCloud 删除核心数据失败

    我正在尝试使用以下方法从 iCloud 中删除核心数据 NSPersistentStoreCoordinator removeUbiquitousContentAndPersistentStoreAtURL options error 但我
  • 在生产中找不到模块“worker_threads”错误

    我创建了一个利用工作线程的 Node js 项目 当我在 VS Code 中运行 npm start 时 代码工作正常 但是当在Ubuntu服务器中构建和复制时 它显示 找不到模块 worker threads 在生产环境中使用工作线程部署
  • 如何传递非插值数据 OpenGL ES (GLSL)

    我正在尝试将简单的 FLOAT 值从顶点传递到片段着色器 如何在不进行插值的情况下 按原样 传递它 在桌面上我可以使用平面变化来禁用插值 openGL es中有类似的东西还是唯一的方法是通过纹理 GLSL ES 目前不支持flat关键字 所
  • 使用 Jquery 将事件动态插入到 Fullcalendar

    我在使用 Jquery 将新事件添加到 fullCalendar 时遇到问题 我正在使用 Eclipse 开发 Web 对 Ajax 完全不熟悉 而且它不适用于我的 Eclipse 一切都写在 jquery 中的 Button click
  • 允许在数据表的“fnServerData”中进行服务器端缓存

    默认情况下 DataTables 中的 Ajax 调用通过在 url 上添加虚假字段来避免缓存 例如http yoursite com api 348522852542 我想禁用此功能 看来ajax函数调用fnServerData它的定义是
  • 以编程方式访问 Eclipse 的调用层次结构

    我需要以编程方式生成调用图作为 Eclipse 插件的一部分 我知道 Eclipse 具有内置的 Open Call Hierarchy 功能 但我一直无法找到一种方法来访问它作为插件开发的一部分 有谁知道如何使用 Eclipse 的调用层
  • 使用 Windows 命令提示符或 PowerShell 在 Spyder 中运行脚本

    我想知道是否有一种方法可以使用 Windows cmd 或 PowerShell 而不是 IPython 控制台在spyder ide 中运行 python 脚本 有时 Ipython 的工作方式与在 cmd 中运行脚本的方式不同 专门用于
  • Python 使用什么字节序写入文件?

    当使用 file write 和 wb 标志时 Python 使用大端还是小端 或者 sys byteorder 值 我如何确定字节序不是随机的 我问是因为我在同一个文件中混合 ASCII 和二进制数据 并且对于二进制数据 我使用 stru
  • 未知提供者:$uibModalInstanceProvider - Bootstrap UI 模式

    我的 UI Bootstrap 模式有问题 在一个控制器中我有这个 app controller tableCtrl scope http uibModal log function scope http uibModal log scop
  • 如何在VLOOKUP中设置范围条件?

    我的 Excel 文件中有下表 我想找到相应输入的值列 Col A Col B Col C Min Max Value 101 AA High 0 10 1 101 AA High 11 20 2 101 AA Low 0 10 3 101
  • 没有模板的组件

    我有一些代码可以对服务器进行 api 调用并返回一些 JSON 它确实作为我的组件中的一种方法存在 但由于它变得有点长 我想将其提取到它自己的文件中 在 vuejs 中 这里的最佳实践是什么 它应该是一个没有模板的组件吗 这将如何运作 我会
  • 期望从可观察的下一个处理程序中抛出错误,用 Jasmine 测试 Angular

    在 Angular 应用程序中 有一个具有以下方法的控制器 onClick void this http get some endpoint subscribe response gt const editUrl this service