- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Jest 文档如下:
toBe just checks that a value is what you expect. It uses === to check strict equality.
对于toEqual
:
Use .toEqual when you want to check that two objects have the same value. This matcher recursively checks the equality of all fields, rather than checking for object identity—this is also known as "deep equal". For example, toEqual and toBe behave differently in this test suite, so all the tests pass.
const x = { a: { b: 3 } };
const y = { a: { b: 3 } };
expect(x).toEqual(y);
expect(x).toBe(y);
在这种情况下,toEqual
通过但 toBe
失败。我知道 toEqual
通过是因为它进行了深度相等 检查。为什么 toBe
在这种情况下会失败?
此外,是否有使用 toBe
和 toEqual
的最佳实践(不仅在 Jest 中,而且在其他测试框架中也是如此)?
最佳答案
它失败是因为 x
和 y
是不同的实例并且不等于 (x === y) === false
。您可以将 toBe
用于字符串、数字或 bool 值等原语,而对于其他一切使用 toEqual
。例如
x = 4
y = 4
x === y // true
x = 'someString'
y = 'someString'
x === y // true
空对象也不相等
x = {}
y = {}
x === y //false
关于testing - Jest 中的 'toBe' 和 'toEqual' 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45195025/
我正在尝试为我的范围变量之一编写规范,但即使它们匹配也失败了。 控制台: Expected [ { id: 1, name: 'Browns', created_at: '2014-08-06T2
In this Jasmine test我比较了两个几乎相同的对象,唯一的区别是第二个对象多了一个未定义的成员。 describe('Testing', function () { it('sho
我查找了 jasmine 源代码,但没有正确找到 toEquals 的实现,我找到的内容如下,在 https://github.com/jasmine/jasmine/blob/master/lib/
目前,我有一个函数,有时会返回一个内部包含一些函数的对象。当使用 expect(...).toEqual({...}) 时,它似乎与那些复杂的对象不匹配。具有函数或 File 类(来自输入类型文件)的
我有一个像这样的 Jasmine 测试: expect(array.length).toEqual(0); 这就过去了。出于好奇,我将其更改为: expect(array.length).toEqua
我正在使用 expect(item).toEqual(otherItem)。根据我读过的所有内容,expect({ a: "a", b: undefined }).toEqual({ a: "a"})
我正在尝试使用函数.not.toEqual() 来测试两个对象是否不同。 据我了解,这个函数应该对我的对象的值进行递归比较。尽管如此,我似乎无法得到我期望的结果。 这是在我的终端中打印出来的内容的摘录
我有以下 Jasmine 单元测试: describe('getAlertsByUserId', function () { it('should get alerts from api/Al
我正在尝试使用 jasmine 测试我的组件,但我不确定为什么我失败 这是y代码 https://stackblitz.com/edit/angular-bup8gb describe('initia
我必须通过以下声明文本: expect(accessPolicyPage.accessPolicyName).toEqual(element.all(by.binding("pol.name")).g
我创建了一个服务来屏蔽数据并编写了一个 Jasmine 测试来比较实际对象和预期对象。当我运行测试时,我在从服务返回的 actual 对象上得到了 undefined 。虽然当我控制台记录它时 con
在了解了 comparison operators === and == 之间的差异之后在 Javascript 中,Jasmines 的相等概念与任何一个都不对应,这让我感到非常惊讶。例如,以下测试
我正在关注 Dan Abramov 关于 Redux 的教程。 ( https://egghead.io/lessons/javascript-redux-avoiding-object-mutati
我正在尝试为 React JS 运行单元测试 - 使用 jest/enzyme。 目前测试失败。不太清楚为什么,也许我没有正确调用 expect(wrapper.find)。这是我测试的一部分: F
我正在编写一系列测试来演示“this”在不同上下文中的值(value)。 这是我当前的测试套件: describe("this keyword", function(){ it('return
我明白为什么以下返回 false... expect({}).toBe({}); 我明白了为什么以下返回 true... expect({}).toEqual({}); 但为什么下面的为真? expe
我是 jest 的新手,所以我不确定这是否是我的错。所以这是我的测试用例 it('should throw error if wrong email or phone number is pr
我一直在尝试比较 jasmine 中的两个 javascript 对象。但我收到错误对象读取没有方法调用。 describe("AutoEditor", function() { var widg
Jest 文档如下: toBe just checks that a value is what you expect. It uses === to check strict equality. 对
我是 Jasmine 的新手,遇到过我期望是 String 或 null 的情况。我试图在 toEqual 中执行 or ,但我看到了一些奇怪的结果,这让我相信我正在以错误的方式处理这个问题。处理这种
我是一名优秀的程序员,十分优秀!