2017-10-14 10 views
1

Comme nous le savons tous attendre remplacé par plaisanterie. Une certaine propriété d'attendre change aussi. L'un d'eux est de Contenir qui était connu comme à inclure. Vous le trouverez ici: https://github.com/skovhus/jest-codemods/blob/master/src/transformers/expect.jsQuelle est l'utilisation réelle de toContain() dans expect?

Mon problème est lorsque j'essaie d'utiliser toContain afin de vérifier si un objet correspond à un autre objet, il me montre une erreur. Mais plus tôt avec toInclude c'était juste un code de ligne. Donc en remplacement de toInclude je trouve ça différent, pas exactement la même chose.

Ce tableau fonctionne correctement.

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

Mais quand je vais avec un objet, cette erreur venir

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

C'est l'erreur

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

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

{"age": 23} 

Répondre

0

.toContain est pour checking that an item is in an array

Si vous voulez vérifier la valeur de la propriété d'un objet, vous pouvez utiliser .toHaveProperty-here are the docs

de sorte que votre exemple serait

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

... ou pour éviter d'apprendre un autre matcher, vous pouvez simplement le faire:

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

Can toHaveProperty() vérifier plusieurs objets? J'étais incapable de le faire. Donc, j'ai utilisé toMatchObject() à cet effet. Par la méthode toMatchObject() est utilisé pour faire correspondre l'objet, pas array.Comment faire correspondre le tableau? Dans la version précédente, toInclude servait à la fois l'objet et le tableau. –

+0

Je ne pense pas mais vous pouvez toujours avoir plusieurs énoncés –

+0

Okay mate. Qu'en est-il de la mise en correspondance, n'importe quelle suggestion? –

1

Des documentation (faits saillants de moi):

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.

Donc, en résumé, il teste si un tableau contient une valeur (s) ou si une chaîne contient une chaîne de caractères donné.

Pour tester des objets comme dans votre exemple, vous pouvez utiliser:

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

C'est montrant TypeError: Impossible de lire la propriété 'ont' undefined –

+0

Celui-ci fonctionne très bien .. attendre ({ nom: 'Adil', âge : 23 }). ToHaveProperty ('âge', 23); –

+0

ok, merci, je l'ai mis à jour – Derlin

1

Son utilisé lorsque vous voulez vérifier l'existence d'un élément dans un tableau. C'est similaire à x in [1,2,3] de python. Notez qu'il ne vous donnera pas l'indice de la première occurrence. Il va juste retourner un booléen