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/