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

用jasmine .toEqual比较两个不同的对象,一个对象是空的,另一个对象有一个键是一个符号,为什么它说它们是相等的?

Jasmine是一个流行的JavaScript测试框架,它提供了一组用于编写和执行测试的函数和工具。其中,.toEqual是Jasmine提供的一个匹配器(matcher),用于比较两个对象是否相等。

在给定的问答内容中,我们有两个不同的对象进行比较。一个对象是空的,另一个对象有一个键是一个符号。根据JavaScript的规则,当使用=====运算符比较两个对象时,它们只有在引用相同的对象时才会被认为是相等的。然而,Jasmine的.toEqual匹配器使用了深度比较(deep comparison)的方式来判断两个对象是否相等。

深度比较会递归地比较两个对象的属性和值,而不仅仅是比较它们的引用。在这种情况下,尽管一个对象是空的,另一个对象有一个键是一个符号,但它们的结构是不同的,因此深度比较会认为它们是不相等的。

然而,Jasmine的.toEqual匹配器在比较对象时,会将符号键转换为字符串键,然后再进行比较。这意味着在这个特定的情况下,.toEqual匹配器会忽略符号键的类型差异,将其视为普通的字符串键。因此,尽管一个对象是空的,另一个对象有一个键是一个符号,但由于它们的键都被转换为字符串并且相等,所以.toEqual匹配器会认为它们是相等的。

总结起来,使用Jasmine的.toEqual匹配器比较两个不同的对象时,一个对象是空的,另一个对象有一个键是一个符号。尽管它们的结构不同,但由于.toEqual匹配器会将符号键转换为字符串键并进行比较,所以它们被认为是相等的。

关于Jasmine的更多信息和使用示例,可以参考腾讯云的Jasmine介绍页面:Jasmine介绍

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

相关·内容

Angular2 之 单元测试

它是这个测试模块唯一声明组件。 本章后面的测试程序更多声明组件,它们中间一些导入应用模块,这些模块更多声明组件。 一部分或者全部组件可能有外部模板和CSS文件。...测试程序像宿主组件那样来描述。 heroEl个DebugElement,代表了英雄所在。 测试程序"click"事件名字来调用triggerEventHandler。...第二个参数传递给事件处理器事件对象。 ---- 自己遇到坑儿 下面都是自己在实际编写单元测试时,真实遇到问题,自己真的在这上面花费了很多时间啊!!!为什么没有花冤枉时间呢?...---- 多次调用同一个异步方法 相信大家这段单元测试代码很熟悉,这里就是模拟多次调用同一个方法时,返回不同值。 这里同步方法模拟返回数据,那么异步方法同样可以。...其实不是代码写问题,单元测试写问题,在第一个expect去判断时候,第二个 service.getRelatedList已经执行完了,所以才会出错。

5.5K20

JavaScript字符串间比较

字符串和其他对象比较大小 字符串和其他对象进行比较,大体要遵循下面的这些考量: 两个操作数都是数值,则进行数值比较 两个操作数都是字符串,则比较两个字符串对应字符编码值 两个操作数一个数值,则将另一个转换为数值...,则通过Number()函数将字符串转换为数值 如果一个操作值对象另一个不是,则调用对象valueOf()方法,得到结果按照前面的规则进行比较 null与undefined相等;avaScript...设计者希望null表示一个值,而undefined表示值未定义。...如果一个操作值为NaN,则相等比较返回false(NaN 本身也不等于 NaN)唯一能判断NaN方法通过isNaN()函数:isNaN(NaN); // true 如果两个操作值都是对象,则比较它们是不是指向同一个对象...也就是,程序运行到判断对象是相等之前,必须确认二者是否都’存在’。

9.3K90

equals() ? ==? hashCode()? 今天就把你们都认识清楚

由此可见'=='在比较对象是引用类型时,栈中地址值进行比较。...=适用所有对象,但是这两个操作符通常在比较对象时候会出问题: 在这里==和!=比较对象引用。尽管对象内容相同,但是对象引用却是不同以n1==n2false。...如果根据 equals(Object) 方法,两个对象是相等,那么两个对象每个对象调用 hashCode 方法都必须生成相同整数结果。...如果根据 equals(java.lang.Object) 方法,两个对象相等,那么两个对象任一对象上调用 hashCode 方法 不要求 一定生成不同整数结果。...这样,当你其中一个作为保存到hashMap、hasoTable或hashSet中,再以“相等”找另一个作为键值去查找他们时候 ,则根本找不到。

42750

Python 哈希(hash) 散列

默认情况下,作为用户定义类实例对象是可以 hasable 它们比较 unequal (除了它们自己) ,它们 hash 值它们 id ()派生出来。...在一般数据结构教材中,散列表里单元通常叫作表元(bucket)。 在 dict 散列表当中,每个键值都占用一个表元,每个表元都有两 个部分,一个引用,另一个引用。...如果自定义 对象调用 hash() 的话,实际上运行自定义 __hash__。如 果两个对象比较时候相等,那它们散列值必须相等,否 则散列表就不能正常运行了。...元组取代字典就能节省空间原因两个: 避免了散列表所耗费空间 无需把记录中字段名字在每个元素里都存一遍。 记住我们现在讨论空间优化。...,它们相等;但是如果在 key1 和 key2 被添加到字典里过程中有冲突发生的话,这两个出现在字典里顺序不一样

2.2K20

== 与equals和hashCode与equals

== : 作用是判断两个对象地址是不是相等。即,判断两个对象是不是同一个对象(基本数据类型==比较值,引用数据类型==比较内存地址)。...equals() : 作用也是判断两个对象是相等。但它一般两种使用情况: 情况1:类没有覆盖 equals() 方法。...一般,我们都覆盖 equals() 方法来比较两个对象内容是否相等;若它们内容相等,则返回 true (即,认为这两个对象相等)。...散列表存储键值(key-value),特点:能根据“”快速检索出对应“值”。这其中就利用到了散列码!...hashCode()与equals()相关规定 如果两个对象相等,则hashcode一定也是相同 两个对象相等,两个对象分别调用equals方法都返回true 两个对象相同hashcode值,

83020

protractor量角器软件_flashback啥意思

预备环境 protractor 一个 Node.js 程序,为了运行 protractor ,你首先需要 Node 环境。你还应该检查一下 Node 版本,应该在 v0.10.0 以上。...('Super Calculator'); }); }); describe 和 it Jasmine 测试框架语法格式。...}); }); 这里,我们使用全局 element 函数和 by 对象它们也是 protractor 创建函数,element 函数用来在页面中定位 HTML 元素,函数返回一个 ElementFinder...element 需要一个参数,一个选择器参数,用来描述如何找到元素,by 对象用来创建选择器,这里我们使用了三种类型选择器。...protractor conf.js 你应该看到页面中输入了两个数字,等待结果显示出来。由于结果 3 ,而不是 5,我们测试失败。修复这个测试,然后重新运行

1.9K40

如何编写出高质量 equals 和 hashcode 方法?

equals 方法:Object 类中 equals 方法用于检测一个对象是否等于另一个对象,在 Object 类中,这个方法将判断两个对象是否具有相同引用,如果两个对象具有相同引用,它们一定是相等...hashcode 方法:用来获取散列码,散列码对象导出一个整数值,散列码没有规律,如果 x 和 y 两个不同对象,那么 x.hashCode() 与 y.hashCode() 基本上不会相同...为什么需要重写 equals 方法和 hashcode 方法,我想主要是基于以下两点来考虑: 1、我们已经知道了 Object 中 equals 方法用来判断两个对象引用是否相同,但是有时候我们并不需要判断两个对象引用是否相等...2、如果两个对象根据 equals(Object) 方法比较相等,那么在两个对象上调用 hashCode 就必须产生结果相同整数。...3、如果两个对象根据 equals(Object) 方法比较并不相等,则不要求在每个对象上调用 hashCode 都必须产生不同结果。

82660

React 组件进行单元测试

比如一个方法可能依赖另一个方法执行,而后者我们来说是透明。好做法使用stub 进行隔离替换。这样就实现了更准确单元测试。...,一个虚拟对象来创建以便测试测试方法 广义讲,以上 spy 和 stub 等,以及一些模块模拟, ajax 返回值模拟、 timer 模拟,都叫做 mock 。...实际上,只要先记这住四个单词,就足以应付大多数测试情况了: describe: 定义一个测试套件 it:定义一个测试用例 expect:断言判断条件 toEqual:断言比较结果 describe(...,我们指定了测试“根目录”,配置了覆盖率(内置istanbul)一些格式,并将原本在webpack中样式文件引用指向了一个模块,从而跳过了这一测试无伤大雅环节 //NullModule.jsmodule.exports...一些模块中可能耦合了 window.xxx 这类全局对象引用,而完全去实例化这个对象可能又牵扯出很多其他问题,难以进行;此时可以见招拆招,只模拟一个最小化全局对象,保证测试进行: //fakeAppFacade.jsvar

4.2K40

java集合详解完整版(超详细)「建议收藏」

实现唯一性比较过程:存储元素首先会使用hash()算法函数生成一个int类型hashCode散列值,然后和所存储元素hashCode值比较,如果hashCode不相等,则所存储两个对象一定不相等...;如果比较内容不相等,那么就是不同对象,就该存储了,此时就要采用哈希解决地址冲突算法,在当前hashCode值处类似一个链表, 在同一个hashCode值后面存储存储不同对象,这样就保证了元素唯一性...(六)LinkedHashMap和HashMap,TreeMap对比 Hashtable与 HashMap类似,继承自Dictionary类,不同:它不允许记录或者值为;支持线程同步,即任一时刻只有一个线程能写...Hashmap 一个最常用Map,根据HashCode 值存储数据,根据可以直接获取值,具有很快访问速度,遍历时,取得数据顺序完全随机。...方法返回true 两个对象相同hashcode值,它们也不一定是相等 综上,equals方法被覆盖过,则hashCode方法也必须被覆盖 hashCode()默认行为堆上对象产生独特值。

80420

如何编写出高质量 equals 和 hashcode 方法?

:Object 类中 equals 方法用于检测一个对象是否等于另一个对象,在 Object 类中,这个方法将判断两个对象是否具有相同引用,如果两个对象具有相同引用,它们一定是相等。...hashcode 方法:用来获取散列码,散列码对象导出一个整数值,散列码没有规律,如果 x 和 y 两个不同对象,那么 x.hashCode() 与 y.hashCode() 基本上不会相同...为什么需要重写 equals 方法和 hashcode 方法,我想主要是基于以下两点来考虑: 1、我们已经知道了 Object 中 equals 方法用来判断两个对象引用是否相同,但是有时候我们并不需要判断两个对象引用是否相等...2、如果两个对象根据 equals(Object) 方法比较相等,那么在两个对象上调用 hashCode 就必须产生结果相同整数。...3、如果两个对象根据 equals(Object) 方法比较并不相等,则不要求在每个对象上调用 hashCode 都必须产生不同结果。

60150

Java Object类 和 String类 常见问答 6k字+总结

题目总结 2.1 == 和 equals 区别? == :如果比较对象是基本数据类型,则比较数值是否相等;如果比较引用数据类型,则比较对象 地址值是否相等。...一般会选择重写此方法,来比较两个对象内容是否相等相等则返回 true。 2.2 如何比较两个对象内容是否相同?...一般会选择重写此方法,来比较两个对象内容是否相等相等则返回 true。 总结:单考虑目的两者差不多,都是用来对比两个对象是相等一致。...如果大量内容都是 equals() 去比对,效率显然比较,所以每次比对之前都去使用 hashCode() 去对比,如果返回 hashCode 不同,代表两个对象肯定不相同,就可以直接返回结果了...> StringBuffer StringBuffer与StringBuilder,他们字符串变量,可改变对象,每当我们用它们字符串做操作时,实际上一个对象上操作,不像String一样创建一些对象进行操作

37020

深度剖析Python字典和集合

可散列数据类型 在Python词汇表中,关于可散列类型定义有这样一段话: “如果一个对象是可散列,那么在这个对象生命周期中,散列值不变,而且这个对象需要实现__hash__()方法。...另外可散列对象还要有__eq__()方法,这样才能跟其他比较。如果两个可散列对象是相等,那么它们散列值一定是一样。” 重点散列值不变!...返回一个只读视图,会跟随源字典动态展示,但是无法源字典做出改动。...散列表其实是一个稀疏数组(总是有空白元素数组称为稀疏数组),散列表里单元叫作表元,在dict散列表中,每个键值占用一个表元,每个表元两个部分,一个引用,另一个引用,因为所有表元大小一致...如果两个对象比较时候相等,那么它们散列值必须相等,否则散列表就不能正常运行了: >>> a = 1 >>> b = 1 >>> a == b True >>> hash(a) 1 >>> hash

1.6K00

Java面试题-集合框架篇三

一个存储单列数据集合,另一个存储和值这样双列数据集合,List中存储数据顺序,并且允许重复;Map中存储数据没有顺序,其不能重复可以重复。...==和equal区别也是考烂了题,这里一下: ==操作符专门用来比较两个变量值是否相等,也就是用于比较变量所对应内存中所存储数值是否相同,要比较两个基本类型数据或两个引用变量是否相等,只能用...equals方法用于比较两个独立对象内容是否相同,就好比去比较两个长相是否相同,它比较两个对象是独立。...比如:两条new语句创建了两个对象,然后用a/b这两个变量分别指向了其中一个对象,这是两个不同对象它们首地址不同,即a和b中存储数值不相同,所以,表达式a==b将返回false,而这两个对象内容相同...Map 提供了一个更通用元素存储方法。 Map集合类用于存储元素(称作""和"值"),其中每个映射到一个值。 它们都有增删改查方法。

53630

java面试强基(7)

散列表存储键值(key-value),特点:能根据“”快速检索出对应“值”。这其中就利用到了散列码!(可以快速找到所需要对象为什么要有 hashCode? ​...其实, hashCode() 和 equals()都是用于比较两个对象是相等。 ​ 那为什么 JDK 还要同时提供这两个方法呢? ​...这是因为两个对象hashCode 值相等并不代表两个对象相等。 ​ 那为什么两个对象相同 hashCode 值,它们也不一定是相等? ​...也就是如果 equals 方法判断两个对象是相等,那这两个对象 hashCode 值也要相等。 ​...总结 : equals 方法判断两个对象是相等,那这两个对象 hashCode 值也要相等两个对象相同 hashCode 值,他们也不一定是相等(哈希碰撞)。

31721

Atom飞行手册翻译: 3.8 编写spec

编写 spec 我们已经通过一些例子查看并编写了一些spec,现在更进一步查看spec框架本身时候了。确切地,你在Atom中如何编写测试呢? Atom使用Jasmine作为spec框架。...任何新功能都要拥有specs来防止回归。 创建新 spec Atomspec和包spec都要添加到它们各自spec目录中。下面的例子为Atom核心创建了一个spec。...添加一个或多个describe方法 describe方法两个参数,一个描述和一个函数。以when开始描述通常会解释一个行为;而以方法名称开头描述更像一个单元测试。...it方法 it方法也有两个参数,一个描述和一个函数。...了解预期(expectation)最好方法阅读Jasmine文档。

76530

硬核原创|Java 面试题全梳理

只能比较对象表示引用双方值是否相等。所以记住,并不是 == 比较就是引用是否相等,equals 比较就是值,这需要区分来说。...如果引用相等的话,直接返回 true ,不相等的话继续下面的判断 然后再判断被比较对象是 String 实例,如果不是的话直接返回 false,如果是的话,再比较两个字符串长度是否相等,如果长度不想等的话也就没有比较必要了...;长度如果相同,会比较字符串中每个 字符 是否相等,一旦一个字符不相等,就会直接返回 false。...如果只重写 equals 方法而不重写 hashcode 方法,很可能会造成两个不同对象它们 hashcode 也相等,造成冲突。...HashMap 长度为什么 2 幂次方 这道题我想了几天,之前和群里小伙伴们探讨每日一题时候,问他们为什么 length%hash == (n - 1) & hash,它们相等前提 length

36130

java中hashcode用法_javahashcode作用

所以hashcode相等只能保证两个对象一个HASH表里同一条HASH链上,继而通过equals方法才能确定是不是同一对象,如果结果为true, 则认为同一对象在插入,否则认为不同对象继续插入。...一、为什么HashCode对于对象是如此重要: 一个对象HashCode就是一个简单Hash算法实现,虽然和那些真正复杂Hash算法相比还不能叫真正算法,如何实现,不仅仅是程序员编程水平问题...特殊情况根据equals() 方法,如果两个对象是相等它们必须有相同hashCode()值(尽管这通常不是真的)。...例如,List接口要 求如果并且只有另一个对象是List,而且它们相同顺序相同Elements(由Element上Object.equals() 定义),List对象等于另一个对象。...就是两个参阅变量值得比较,我们 都知道参阅变量值其实就是一个数字,这个数字可以看成鉴别不同对象代号。两个对象参阅值比较,就是两个数字比较两个代号比较

90420
领券