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) .sortNe trie pas un objet par ses clés.