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

Angular 9测试出现“期望是间谍,但得到了函数”错误

是由于测试中使用了错误的间谍对象导致的。在Angular中,间谍对象是用来模拟依赖项的行为的工具。

解决这个错误的方法是确保正确地创建和使用间谍对象。以下是一些可能导致这个错误的常见原因和解决方法:

  1. 检查测试中的间谍对象创建方式:确保使用spyOn函数来创建间谍对象,而不是直接使用jasmine.createSpy或其他方式。例如,正确的创建方式是:spyOn(service, 'methodName').and.returnValue(of({}));
  2. 检查间谍对象的调用方式:在测试中,使用间谍对象时,应该使用toHaveBeenCalled或其他相关的间谍对象方法来验证方法是否被调用。例如,正确的验证方式是:expect(service.methodName).toHaveBeenCalled();
  3. 检查间谍对象的返回值设置:如果间谍对象的方法有返回值,需要使用and.returnValue方法来设置返回值。例如,正确的设置方式是:spyOn(service, 'methodName').and.returnValue(of({}));
  4. 检查间谍对象的参数匹配:如果间谍对象的方法有参数,并且需要对参数进行匹配,可以使用toHaveBeenCalledWith方法来验证参数是否正确。例如,正确的验证方式是:expect(service.methodName).toHaveBeenCalledWith(expectedArg);

总结起来,解决“期望是间谍,但得到了函数”错误的关键是正确创建和使用间谍对象,并使用正确的验证方法来验证方法的调用和参数。

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

  • 云计算产品:https://cloud.tencent.com/product
  • 云原生产品:https://cloud.tencent.com/solution/cloud-native
  • 人工智能产品:https://cloud.tencent.com/solution/ai
  • 物联网产品:https://cloud.tencent.com/solution/iot
  • 移动开发产品:https://cloud.tencent.com/solution/mobile-development
  • 存储产品:https://cloud.tencent.com/product/cos
  • 区块链产品:https://cloud.tencent.com/solution/blockchain
  • 元宇宙产品:https://cloud.tencent.com/solution/metaverse

请注意,以上链接仅供参考,具体产品选择应根据实际需求进行评估和决策。

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

相关·内容

AngularDart 4.0 高级-生命周期钩子 顶

它们遵循一种常见的模式:父组件作为一个子组件的一个或多个生命周期钩子方法的测试装备。 以下每个练习的简要说明: 组件 描述 Peek-a-boo 演示每个生命周期的钩子。...间谍的ngOnInit记录该事件。 重置按钮清除英雄列表。 Angular从DOM中移除所有英雄元素并同时销毁他们的间谍指令。 间谍的ngOnDestroy方法报告其最后时刻。...Angular团队负责人Misko Hevery解释了为什么您应该避免使用复杂的构造函数逻辑。 不要在组件构造函数中获取数据。您不应该担心当在测试下创建或决定显示之前时新组件会尝试联系远程服务器。...ngOnChanges并没有捕捉到hero.name的变化,这一开始令人惊讶。 当输入属性的值改变时,Angular只会调用钩子。 hero属性的值对hero对象的引用。...Angular的单向数据流规则禁止在视图组成之后更新视图。 组件视图组合完成后,这两个钩子都会触发。 如果钩子立即更新组件的数据绑定comment属性,Angular会抛出一个错误(尝试它!)。

6.1K10

国庆节前端技术栈充实计划(8):我使用 AngularJS 和 ReactJS 的经验

随着互联网的发展,前端开发这个行业达到了全新的高度,并得到了前所未有的重视。 就像大多数前端开发者那样,我们的技术栈曾经由 HTML 和 jQuery 构成。...然而,当一个应用的复杂度大幅度增加,一堆问题开始出现比预期的更频繁:你可能数据更新了,漏掉了更新某一处展现,你通过 Ajax 获取和更新了内容,没有绑定事件,还有另外一些问题,把这些全部列出来会是个很长的清单...我明白许多问题我自己的问题,而我想要指出的Angular不可预测的,使用它的时候会遇上各种各样的坑。 ? 当然,Angular 还是善于处理很多事情的。...另一个我无法吐槽的好东西:内建的表单控制器,它为 input 字段提供了默认的格式化、解析和校验,而且还提供了一个很好的插件用来展示错误信息。...如果我们使用的 React,那么至少让重构工程师写组件会是一个挑战,要么让他学会写基本的 JSX,要么我就只能自己将他写的 HTML 复制粘贴到 JSX 中。

1.4K30

React 教程:React 快速上手指南

React 一座耸立在 JavaScript 代码海上醒目的灯塔 当然 React 并不是唯一的选择,目前它是最受欢迎、最稳定、最具有创新性的解决方案之一,虽然它仍然在不断升级,更多的在改进,而不是增加功能...React Native背后的想法并不是什么全新的东西,不过看起来很有趣,尤其是因为它得到了 Facebook 的支持。 另一个重大变化 Redux,一个 Flux 实现。...另外在速度和内存分配等方面 React 与其主要竞争对手(Angular 和 Vue 都能想得到)非常相似,有一篇关于这个问题的文章很不错,请记住这一点:绝大多数程序并不会做这种处理上万行数据的事。...( Facebook 支持 React,而 Google 支持 Angular。) 上手最简单和最快的学习曲线? Vue/React。在这里我更倾向于 Vue,这只是我个人的意见。至于为什么?...从 16.6 + 开始,在函数组件中也可以用类似的东西 —— 全靠 React.memo 这个更高阶的组件,在默认情况下表现像 PureComponent(浅层比较),在你进行自定义的 props 比较时它还需要第二个参数

1.4K30

Angular React Vue我应该选择什么?

现如今 Angular 和 React 非常流行,并且最近出现的新贵 VueJS 同样博得了很多人的关注。更重要的,这只是一些新起之秀。 ?...现如今 Angular 和 React 非常流行,并且最近出现的新贵 VueJS 同样博得了很多人的关注。更重要的,这只是一些新起之秀。 ?...当你在 JSX 中输入错误时,React 将不会编译,并打印输出错误的行号。Angular 2 在运行时静默失败(如果使用 Angular 中的预编译,这个参数可能无效的)。...这是不正确的,因为 Vue 转换 HTML 来渲染函数 - 所以错误显示没有问题(感谢 Vinicius Reis 的评论和更正!)。...这也可能一个好处,因为你在学习技术时必须学习正确的概念。用 Vue,你可以用老方法来做。这一开始可能会比较容易上手,长此以往会出现问题。

2.8K20

2017年前端开发手册一-2016前端技术回顾

(Linting 分析代码以标记代码的潜在错误或可疑用法的过程; 所谓Hinting,英文原意暗示、提示。...9. 开发人员有开始放弃Sublime和Atom而转向VScode的趋势。 10. jQuery还在,人们使用的兴趣下降了。jQuery 3的上线,就像森林中的一棵树倒下,没有人听到。 11....JavaScript函数式编程和模式得到了非常多的关注。 13.离线开发与正在发展的网络应用成为主流。 14. 微软在前端领域崭露头角并做出了贡献。 15....Angular2(又名“Angular”)从神坛上走了下来,开发者也意识到它永远不会像Angular 1那样主流。 17. JavaScript明显仍然软件技术的中心。 18....HTTPS,是的,我们认真的。 37. BASH在windows上出现。 38. 通知类API被chrome用户使用和滥用,必须获得你的允许。 39. Firebug正式死亡。

1.3K50

JavaScript 框架大战已结束,赢家只有一个

其他如 Angular,似乎也未像预期或承诺的那样一飞冲天。 jQuery 它可能现存年龄最大的竞争者。它非常受欢迎,因为它解决了浏览器之间的互操作性,其应用程序很难扩展。...; }); Angular 它的出现是为了与 React 一决雌雄。AngularJS 已经老了,它存在性能和健壮性问题,而随着 React 变得越来越好,许多程序员对其投出艳羡的目光。...例如,自 V2 以来,大家都期望有一个创建服务器端呈现页面的简单方法,截止到 2022 年 2 月 24 日,Angular.io 网站本身在没有 JavaScript 的情况下都无法工作。...从理论上讲,这个问题在版本 3 中得到了解决。但是,将自己的错误归咎于他人并不适合社区。 SvelteJS 它是战争中不断壮大的竞争者,并且正在做出巨大的承诺。...Mitosis 你可能没有听说过它,正是因为它让我写下了这篇文章。Mitosis Angular 的创建者 Misko Hevery 编写的最新框架。

1K30

后端程序员的Angular快速指南|TW洞见

在那个时代,虽然尚未正式提出“前端”的概念,不过已经出现了不少事实上的前端程序。这些前端程序相对于如今包罗万象的前端还是过于原始了,很多前端代码都只是嵌入在后端页面中的龙套。...无论英文社区还是中文社区,都出现了一些优秀的Angular工程师,他们总结出了一些经验和教训,并给出了自己的解决之道,全凭自己的力量与热情在社区中传播。...可选强类型 强类型很多Java程序员信心的保障,同时也因为过于繁琐而饱受抨击。 现在,它随着TS又来到了前端世界。不过不用害怕Java世界中的悲剧重演,因为TS中的强类型“可选”强类型。...一个团队中,如果能有谦逊的super star当然好,这种团队可遇而不可求的,更现实的期望一个能相互信任、各尽所能的团队。...有一阵子,培养全栈程序员的期望被放在了Fullstack JavaScript上 —— 它既能写前端程序又能写后端程序还能写桌面程序。不过事实证明,这种期望落空了。

1.8K100

用 Mathematica 破解密码

密码的弱点(您用相同的不同字母交换消息中出现的每个特定字母)它们不会改变字母的模式。利用这一事实的最简单的攻击频率分析。...我想,如果 16 世纪的间谍可以手工完成,我应该能够在大约 10 分钟内在Mathematica中将其自动化。 让我们开始吧。首先,我想生成随机测试密码。...问题一些字母之间的频率差异小于 1%,这些字符在 10,000 个字符样本上的频率的标准偏差可能高达 0.5% 左右,这使得一个字母很可能出现在频率顺序中的错误位置。...使用这些分布,我们看到更常见的字母“s”实际上只会在 54% 的时间内排名出现在“r”之前。换句话说,频率分析有 46% 的时间错误的。...此时,面对比我计划的要多得多的工作,我想到我们可以采用更简单的方法对文本进行拼写检查,并对建议的更正使用此改进测试。好的,比拼写检查稍微复杂一点,这是基本概念。

80220

响应式脑电波 — 如何使用 RxJS、Angular、Web 蓝牙以及脑电波头戴设备来让我们的大脑做一些更酷的事

虽然脑电波主要用于医疗用途,仍会不时出现一些新颖的使用案例。...Muse 2016: AF7 和 AF8 前额电极, TP9 和 TP10 耳电极 使用 RxJS 的响应流 构建库时,我需要决定如何暴露传入的脑电波数据。...使用 Muse、 Angular 和 Smoothie Charts 将我的大脑活动进行可视化 这个应用以一种简单的方式证明了数据流式传输,老实说,查看数据图确实能够吸引人,如果只是这样而已,那么你将很快失去对它的兴趣...由于电极在眼睛旁边,我们期望眼球的运动产生显着的电势差。...出现在控制台中。原因眨眼会另电势产生变化。为了必要出现过多的 “Blinks!”,我们需要进行去抖动过滤 ( debounce ),类似于这篇文章 所做的。

2.2K80

angularJS之站在jQuery的肩膀上

jQuery:用更少的代码,实现更强悍的功能 托互联网日新月异发展的福,浏览器变成了人们接入互联网的入口,而JavaScript 这个曾经的小语种,终于成功地站到了舞台的中央,唤起了开发者的兴趣。...聪明人很快发现了这个痛点,于是, 抹平浏览器差异的jQuery库出现了。 ?...换句话说, 应用的开发逻辑AngularJS的,你跟着它走。 所以,AngularJS难学一些,因为它有一个架子在那,你不了解这个架子, 基本没法下手。...选择符的问题 从开发者的角度,jqLite最明显的精简不支持选择符。你只能向 angular.element传入一个DOM对象。...inheritedData() - 和data()一样,如果当前元素没有指定的数据,会向上级 节点继续找。

86210

测试人员必看-做好自动化测试的7大技能

在整个测试过程中进行手动操作,而不是完全依赖自动化,这将确保在执行脚本之后,测试结果不会出现问题。...这个工具支持不同层次的测试技能集。非程序员也可以快速上手一个自动化测试项目(如使用间谍对象记录测试脚本),同时也节省了程序员和高级测试人员构建新库和维护脚本的时间。 3....这个工具有先进的图像识别,重用测试组件和自动生成文档功能。 UFT 使用 VB 脚本来注册测试过程和对象控制。UFT 被集成到了 Mercury 商业流程测试和 Mercury 质量中心。...因为它们灵活的,允许用户记录任何错误,并根据错误如何影响项目根据优先级对它们进行排序。此外,它的可伸缩性允许团队成员之间轻松地交换信息。...如果项目遵循DevOps或敏捷,不要期望团队领导告诉你该做什么。及时交付工作,并为每天的会议做好准备,以防止涉众或经理对当前的工作阶段提出一些关键问题时出现任何尴尬的情况。

2.3K00

TW洞见〡为什么你的Angular代码很难测试

我们应该设法让测试更简单,通过将Ajax请求封装到service中,我们只需要让被mock的service返回我们期望的结果就可以了。...只有这样大家才会喜欢写测试,甚至做到测试驱动开发,要去mock$http这样的东西,显然增加了测试的负担。...你应该已经猜到了第二个问题我会说一说对它的测试,通常来说,如果一个service创建成本较高或是存在外部依赖/请求的话,我们会将这个servicemock掉,通过让mockedservice直接返回我们想要的结果来让我们只关注被验证的业务逻辑...所以,如果你的处理函数传递给service中的API的话,那么你的测试其实就已经跟这个API的实现绑定了,你只有去创建一个真实的service并且让它发送HTTP请求,你的处理函数才会被执行到。...正确的打开方式应该是这样的:service的API只需要返回promise,对应的处理函数的绑定在这个返回的promise上,这样我们只需要mock那个service的接口让它返回一个我们期望的promise

1.5K30

AngularDart4.0 指南- 模板语法一 顶

Angular的早期教程中,你遇到了插值的双曲括号{{and}}。...这么想很方便,你会因为这个错误而受苦。虽然这不完全正确。插值收敛到属性绑定中的一种特殊语法,如下所述。 首先,让我们仔细看看模板表达式和语句。 模板表达式 模板表达式产生一个值。...另外, 将应用和业务逻辑放到到组件本身,在那里它将更容易开发和测试。 幂等性 幂等表达式理想的,因为它没有副作用,并且改善了Angular的变化检测性能。...元素属性(property)可能更常见的目标,Angular首先查看名称是否已知指令的属性(property),如下例所示: [ngClass]...Angular可能会或可能不会显示更改的值。Angular可能会检测到更改并发出警告错误。通常来说,保留数据属性和方法返回值就够了。

5.1K10

速速更新你的iPhone,新漏洞大得可怕,全球16.5亿台设备受影响

数据库中出现的信息涉及巴基斯坦总理、乌干达前总理、法国总统和南非总统。 Pegasus 经常被媒体与沙特记者贾麦勒 · 卡舒吉联系在一起,据称沙特使用此间谍软件锁定了他的位置。...Pegasus 能够攻破最新版本的苹果和安卓系统,而且攻击方式也从引导用户点击链接,逐渐发展到了直接发送链接让手机在不知情的情况下被感染。...Citizen Lab 的研究人员进一步分析发现: 同一个扩展名为「.gif」的文件具有 27 个副本,并且虽然扩展名「.gif」,该文件实际上一个 748 字节的 Adobe PSD 文件。...尽管时而有人吐槽「反向升级」,保持设备系统的最新状态显然一件利大于弊的事。对于苹果用户来说,在 9 月 14 日发布会前一天让 iOS 14 版本获得安全补丁的操作,让修复内容覆盖了更多设备。...9月14日19:00-20:00,第0讲导览将介绍什么图形学、什么太极。 直播将在机动组视频号进行,欢迎大家预约。

49230

Angular v8 发布!来看看有什么新功能

这并非他们大发善心,而是因为 Google 有 600 多个以 Angular 为基础的应用程序 —— 尽管谣传,实际数字要高得多。 在 Angular 8 中 Ivy 的预览版现在可供测试。...要在调试模式下运行程序,建议使用 AOT: 1ng serve --aot 此外,值得一提的通过 ng build 创建的程序的大小。等到 Angular 9 发布时 Ivy 最终应该会默认激活。...虽然对有 8 行和 8 列的常规棋盘的计算相当快,但是普通计算机从 12×12 格开始就达到了其极限。当前最高记录解决具有 27 x 27 格的解决方案。俄罗斯的超级计算机完成了此任务。...延迟加载 自 Angular 出现的第一天起,路由就支持延迟加载。...但是由于许多IDE支持导入,因此无效值将立即返回错误

3K30

2017年前端开发工具趋势

本文来源于全球的5254份前端工具使用的调查报告,期望通过本文能够帮助大家更好的了解最新的前端开发工具趋势。...25%的项目目前正在使用angular 1,然而只有8%的开发人员认为使用Angular 1很有必要,同时选择使用Angular 2的只有8%。 ​...其中Webpack最受欢迎的模块绑定工具,占到了31%,其次Browserify(11%)、RequireJS(8%)。...但是他们可能会使用文本编辑器和IDE来检查代码错误测试工具的使用率在一年时间之内增长了12%,达到了52%。但是纵观过去,JavaScript的测试一直个挑战。...测试驱动开发(TDD)这样的技术虽然能够捕获逻辑错误,却不能捕获异步事件下发生的错误。幸运的,行为驱动开发(BDD)很可能会融合到真实浏览器的检查活动中,这样也会促使前端测试更加可操作。

43730

告别 React,拥抱 Svelte:21天重写应用,开发速度翻倍代码量减半!

React 出现时,其开发体验显然比当时的竞争对手(如 jQuery 和早期的 Angular,当时的 Angular 与今天的 Angular 不同)要好得多,远远超过了 10 倍的标准。...我们几乎把所有东西都迁移到了 Svelte 上。当然,在迁移过程中我们也对一些功能进行了重新设计,这只是因为这样做起来很容易。要说的话,我怀疑我们的 Svelte 代码写多了,不是写少了。...当然,我们也包含了一些单元测试这些测试同样在 Cypress 运行器中实现的,主要是因为我不想为 testing-library 额外设置持续集成(CI)。...它似乎在优化错误的方向。 鉴于 Svelte 无论采用哪种渲染模式都表现非常迅速,我并不打算在此问题上过多纠结。...有了符文和 untrack 函数,确保响应性在正确的时间和位置发生变得轻而易举,而不再不受控制的。

18310

解读移动端的跨平台开发:TypeScript + Angular

当我们用TypeScript来写程序的时候,可读性得到了大量的提高,所有的API接口更清晰明了,以帮助我们更好的扩展庞大应用的开发。...StrictNullCheck可以防止在整个流程中出现常见错误。 对于开发者来说我们很多时候需要一定的控制,TypeScript提供了类型的转换和类型的断言。...在Google内部,当一个工程师改了一行Angular代码的时候有成千上万的单元测试都会被运行。我们希望平台一个稳定的平台,新出的版本不会破坏以前现有产品的开发。...不管组件、指令、内容投放还是“管道”都能让我们的开发者更方便地去描述想要做的事情。 还有就是依赖注入,这个对于写过很多单元测试的朋友应该不陌生。...Native Script NativeScript一个提供runtime编译转码的运行层框架,可以让你的JavaScript和Angular模板直接转化成相对应的原生函数和租件。

3.1K80
领券