.toBe()和.toEqual()之间的区别 - Jasmine Karma测试用例

时间:2016-05-04 10:01:21

标签: angularjs jasmine karma-jasmine

我正在使用Jasmine karma测试案例一段时间,因为使用了.toBe()而不是.toEqual(),因此发现测试失败了。 .toBe()和.toEqual()之间有什么区别?当你使用它们时?

3 个答案:

答案 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

中找到有关其他匹配器的更多详细信息