2016-05-04 57 views

回答

2

在我的經驗toBe用於比較字符串,布爾值,例如:

expect(enabled).toBe(true) 
expect(user.name).toBe('Bob') 

toEqual比較數組或對象時使用。例如:

expect(myArray).toEqual([1,2,3]) 
1
  • toBe()比較嚴格(例如:obj1 === obj2
    如果比較兩個對象中的對象的身份被取入考慮。

  • toEqual()只考慮條目的值(它比較下劃線的方法isEqual等對象)。

+0

'toEqual'沒有做一個'=找到其他匹配器的詳細信息='檢查。 'toEqual'與下劃線isEqual'方法比較相似,它檢查a和b之間的非對稱匹配,它還允許給出一個自定義匹配函數的數組以及檢查值之間的不等式。 https://github.com/jasmine/jasmine/blob/master/src/core/matchers/matchersUtil.js查看'toEqual'使用的'eq'函數。這允許對象值匹配,數組值匹配等。 –

+0

@DavidBarker你是對的,我簡化了這個概念太多了... – maioman

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

相關問題