- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我写了下面的测试:
it('Can decrement the current step', function () {
expect(reducer(TestState, { type: 'GOTO_PREVIOUS_STEP' })).toMatchObject({ currentStep: 4 });
});
it('Can decrement the current step v2', function () {
expect(reducer(TestState, { type: 'GOTO_PREVIOUS_STEP' })).toEqual(expect.objectContaining({ currentStep: 4 }));
});
这两个好像都通过了测试,有什么区别吗?它们之间有性能影响吗?
最佳答案
通过查看文档和我自己的实验来证实这一点,不同之处在于处理嵌套在作为期望传递的 props 中的对象。
如果期望对象有一个属性,包含一个对象,该对象包含实际对象的等效属性中的一些但不是全部属性,则:
.toMatchObject()
仍然会通过,as seen in the docs .
expect.objectContaining()
将失败(除非您使用 expect.objectContaining()
在期望对象本身中声明该属性)
示例(在 Jest 中测试):
// objectContaining, with nested object, containing full props/values
// PASSES
expect({ position: { x: 0, y: 0 } }).toEqual(expect.objectContaining({
position: {
x: expect.any(Number),
y: expect.any(Number)
}
}));
// objectContaining, with nested object, containing partial props/values
// FAILS
expect({ position: { x: 0, y: 0 } }).toEqual(expect.objectContaining({
position: {
x: expect.any(Number)
}
}));
// objectContaining, with nested object, also declared with objectContaining, containing partial props/values
// PASSES
expect({ position: { x: 0, y: 0 } }).toEqual(expect.objectContaining({
position: expect.objectContaining({
x: expect.any(Number)
})
}));
// toMatchObject, with nested object, containing full props/values
// PASSES
expect({ position: { x: 0, y: 0 } }).toMatchObject({
position: {
x: expect.any(Number),
y: expect.any(Number)
}
});
// toMatchObject, with nested object, containing partial props/values
// PASSES
expect({ position: { x: 0, y: 0 } }).toMatchObject({
position: {
x: expect.any(Number)
}
});
关于javascript - '.toMatchObject' 和 'objectContaining' 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45692456/
我对我的 Mongoose 模型进行了测试,虽然一个模型的测试运行完全正常,但另一个模型基本上是一个副本 - 不起作用。老实说我不明白这个问题。我尝试删除一些属性或添加硬编码值以真正 100% 完全匹
我对我的 Mongoose 模型进行了测试,虽然一个模型的测试运行完全正常,但另一个模型基本上是一个副本 - 不起作用。老实说我不明白这个问题。我尝试删除一些属性或添加硬编码值以真正 100% 完全匹
我正在使用 Jest 来测试我的 Node 应用程序,以下情况验证了一些数据已添加到数据库中(考虑 DB 逻辑工作正常): it("should add empty string hooks if n
我正在测试一个对象是否匹配一组字段,但其中一个是 float ,我需要使用 .toBeCloseTo .如何在一个 expect 内完成? expect(foo).toMatchObject({
我写了下面的测试: it('Can decrement the current step', function () { expect(reducer(TestState, { type: '
假设某个东西返回一个复杂的对象: const value = { ..., client: { ... }, ... }; 我想测试一堆属性,对于client我想确保它有一定的
我想用 jest 测试返回的对象是否符合我的预期。 我正在尝试这个: const desiredResult = { host: '192.168.1.1', port: expect.any
我正在使用 JEST 匹配器 toMatchObject 来确保对象包含多个属性并且一些值是静态的,而其他一些值应该匹配特定的正则表达式 问题是:当静态值不匹配时,输出也会显示正则表达式值不匹配,尽管
我有一个快速 API 端点,它返回一个对象,并且在该对象上有一个属性(在我们下面的示例中为 property3),它的值是日期。 例如 res.body = { "property1
我正在测试一个 React 应用程序,它基本上遵循了标准的、官方认可的 create-react-app 设置。 我的测试如下: import React from 'react'; import {
我是一名优秀的程序员,十分优秀!