Angularjs .toBe()和.toEqual()之间的差异-Jasmine Karma测试用例
我使用Jasmine karma测试用例有一段时间了,发现测试失败的原因是使用了.toBe()而不是.toEqual()。.toBe()和.toEqual()之间有什么区别?当您使用它们时?根据我的经验,Angularjs .toBe()和.toEqual()之间的差异-Jasmine Karma测试用例,angularjs,jasmine,karma-jasmine,Angularjs,Jasmine,Karma Jasmine,我使用Jasmine karma测试用例有一段时间了,发现测试失败的原因是使用了.toBe()而不是.toEqual()。.toBe()和.toEqual()之间有什么区别?当您使用它们时?根据我的经验,toBe用于比较字符串、布尔值,例如: expect(enabled).toBe(true) expect(user.name).toBe('Bob') expect(myArray).toEqual([1,2,3]) toEqual更适合于比较数组或对象。例如: expect(enable
toBe
用于比较字符串、布尔值,例如:
expect(enabled).toBe(true)
expect(user.name).toBe('Bob')
expect(myArray).toEqual([1,2,3])
toEqual
更适合于比较数组或对象。例如:
expect(enabled).toBe(true)
expect(user.name).toBe('Bob')
expect(myArray).toEqual([1,2,3])
比较严格(例如:toBe()
)obj1===obj2
如果比较两个对象,将考虑对象的身份。- 而
toEqual()
- 下面是一个例子,解释了两者之间的区别
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);
});
});
});
您可以在官方的
toEqual
不执行=检查中找到有关其他匹配者的更多详细信息toEqual
与下划线isEqual
方法比较类似,它首先检查a和b之间的非对称匹配,它还允许您提供自定义匹配函数的数组,以及检查值之间的不平等性。查看toEqual
使用的eq
功能。这允许对象值匹配、数组值匹配等@DavidBarker你说得对,我把这个概念简化了一点。。。