javascript - expect.anything() 不适用于 expect.toBe()

标签 javascript jestjs

expect.anything() 不适用于 expect.toBe(),但适用于 expect.toEqual()

test("this will pass", () => {
  expect("red").toEqual(expect.anything());
  expect("red").toBe(expect.anything());
});

两个测试都应该通过,但是第二个测试失败了

最佳答案

toBe使用 Object.is 比较值(参见 description );
expect.anything() 返回 Anything 的对象 class

因此,在第二种情况下,您将字符串与对象进行比较 - 这就是它失败的原因。

toEqual事实上调用method准备好与匹配器对象(如 Anything 类的实例)一起工作 - 它调用匹配器的 asymmetricMatch 方法。

因为在第一种情况下 asymmetricMatch 返回 true,所以第一个测试通过。

关于javascript - expect.anything() 不适用于 expect.toBe(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54479499/

相关文章:

javascript - 使用 WebGL 进行实时 DEM 数据渲染

javascript - 未定义未处理的 Promise Rejection

javascript - 使用 Jest 测试第 3 方模块内的匿名函数

unit-testing - JestJS - 在覆盖率报告中显示所有未覆盖的行

javascript - 检查 Iterable 是否是一个 Map

javascript - 如何让 jQuery Tablesorter 默认降序排列?

Javascript正则表达式过滤十六进制数

reactjs - 通过 jest 运行测试,我在包含的 .jsx 文件中得到 `Unexpected token`

javascript - 如何在 jest setupFiles 中访问 'expect'

javascript - 在 VS Code 中使用 Node shim 调试 React Native