Au cas où j'aurais deux objets:
const sortA = JSON.stringify(Object.keys(a).sort) const sortB = JSON.stringify(Object.keys(b).sort) expected(sortA).toEquals(sortB)
Je sais comment trier les propriétés par les clés de tri de l'objet mais je ne sais pas comment les analyser en objet.
Exemple:
const a = { sample: 'this is sample', errorMessage: 'status is error' } const b = { errorMessage: 'status is error' sample: 'this is sample', }
3 Réponses :
Vous devez utiliser toEqual
pour cette comparaison d'objets:
expected(sortA).toEqual(sortB)
Vous pouvez prendre les entrées de l'objet, trier par clé, obtenir JSON et comparer les chaînes.
Cela fonctionne uniquement pour les objets non imbriqués.
const sortBy = k => (a, b) => a[k].localeCompare(b[k]), a = { sample: 'this is sample', errorMessage: 'status is error' }, b = { errorMessage: 'status is error', sample: 'this is sample' }, sortA = JSON.stringify(Object.entries(a).sort(sortBy(0))), sortB = JSON.stringify(Object.entries(b).sort(sortBy(0))); console.log(sortA === sortB);
Vous devriez plutôt créer une fonction qui fait cela:
const a = { sample: 'this is sample', errorMessage: 'status is error', }; const b = { errorMessage: 'status is error', sample: 'this is sample', }; const c = { errorMessage: 'status is error !', sample: 'this is sample', }; const compare = (ob1, ob2) => Object.keys(ob1).length === Object.keys(ob2).length && !Object.keys(ob1).some(key => ob2[key] !== ob1[key]); console.log(compare(a, b)); console.log(compare(a, c));
Object.keys (a) .sort
Ne trie pas un objet par ses clés.