2017-10-14 111 views
1

正如我們都知道期望替換爲笑話。期望的某些性質也會發生變化。其中之一是被稱爲包括的內容。你會發現它在這裏:https://github.com/skovhus/jest-codemods/blob/master/src/transformers/expect.jstoContain()的實際用途是什麼?

我的問題是當我試圖使用toContain爲了檢查一個對象是否與另一個對象匹配,它顯示我錯誤。但之前用toinclude它只是一行代碼。所以作爲替代包括我發現它不同,不完全相同。

這個數組工作正常。

expect([2,3,4]).toContain(4);

但是當我去的對象,這個錯誤拿出

expect({ 
 
     name : 'Adil', 
 
     age : 23 
 
    }).toContain({ 
 
     age : 23 
 
    });

這是錯誤

Error: expect(object).toContain(value) 
Expected object: 

{"age": 23, "name": "Adil"} 
To contain value: 

{"age": 23} 

回答

0

.toContainchecking that an item is in an array

如果你想檢查一個對象的屬性的值,那麼你可以使用.toHaveProperty - here are the docs

所以你的例子是

expect({ 
    name : 'Adil', 
    age : 23 
}).toHaveProperty('age', 23); 

...或避免學習另一個匹配器,你可以這樣做:

expect({ 
    name : 'Adil', 
    age : 23 
}.age).toBe(23); 
+0

可以toHaveProperty()檢查多個對象嗎?我無法做到。所以,我用toMatchObject()來達到這個目的。順便說一下,使用MatchObject()來匹配對象,而不是數組。如何匹配數組?在以前的版本中,toInclude提供了對象和數組。 –

+0

我不這麼認爲,但你總是可以有幾個期望的陳述 –

+0

好的隊友。匹配數組,什麼建議呢? –

1

documentation(來自我亮點):

Use .toContain when you want to check that an item is in an array. For testing the items in the array, this uses ===, a strict equality check. .toContain can also check whether a string is a substring of another string.

因此,在總結,它測試如果數組包含一些值(一個或多個),或者如果一個字符串包含的字符的給定鏈。

要在你的榜樣測試對象一樣,你可以使用:

expect({ name : 'Adil', age : 23 }).toHaveProperty('age', 23); 
+0

它顯示 類型錯誤:無法讀取屬性 '有' 的未定義 –

+0

這一個工作正常..期待({ 名: '阿迪力', 年齡:23​​ })。toHaveProperty( '時代',23); –

+0

好的,謝謝,我更新了 – Derlin

1

它的使用,當你想在一個陣列中檢查項目的存在。它類似於python的x in [1,2,3]。請注意,它不會給你第一次出現的索引。它只會返回一個布爾

相關問題