我正在使用Jasmine karma测试案例一段时间,因为使用了.toBe()而不是.toEqual(),因此发现测试失败了。 .toBe()和.toEqual()之间有什么区别?当你使用它们时?
答案 0 :(得分:3)
toBe()
比较严格(例如:obj1 === obj2
)
如果比较两个对象,则考虑对象的身份。
虽然toEqual()
仅考虑所考虑的条目的值(它比较下划线的isEqual
方法之类的对象)。
答案 1 :(得分:2)
根据我的经验,toBe
用于比较字符串,布尔值,例如:
expect(enabled).toBe(true)
expect(user.name).toBe('Bob')
比较数组或对象时使用 toEqual
。例如:
expect(myArray).toEqual([1,2,3])
答案 2 :(得分:0)
这是一个解释两者之间差异的例子
describe("Included matchers:", function() {
it("The 'toBe' matcher compares with ===", function() {
var a = 12;
var b = a;
expect(a).toBe(b);
expect(a).not.toBe(null);
});
describe("The 'toEqual' matcher", function() {
it("works for simple literals and variables", function() {
var a = 12;
expect(a).toEqual(12);
});
it("should work for objects", function() {
var foo = {
a: 12,
b: 34
};
var bar = {
a: 12,
b: 34
};
expect(foo).toEqual(bar);
});
});
});
您可以在官方website
中找到有关其他匹配器的更多详细信息