J'ai créé un module Node.js exactement pour cette tâche: validate seuls les champs qui sont fournis dans l'objet prévu.
Dans l'exemple ci-dessous, je veux comparer deux objets: actual
(il a été retourné par test) et expected
(résultat attendu). Certains des champs dans actual
sont générés automatiquement, (_id
), donc j'ai besoin de vérifier seulement qu'ils existent et ont un format spécial. Certains des champs que je ne veux pas comparer (téléphone avec le type work
, account.number
). Donc expected
objet contient uniquement les champs requis pour le test:
// Some test method returns this object
let actual = {
_id: '5945bf36ccb3fa0011e8533c',
name: 'John',
email: '[email protected]',
phones: [
{ type: 'mobile', number: '1234567' }
{ type: 'work', number: '567382' }
],
account: {
number: '11111',
registered: '2010-04-21'
},
createdAt: '2017-02-03'
};
// Ned to do the following assertions:
// _id is exists
// name and email match
// mobile phone is exists and it's a number
// account registered match
let expected = {
_id: '_mock_',
name: 'John',
email: '[email protected]',
phones: [
{ type: 'mobile', number: /^d{1,10}$/ }
],
account: {
registered: '2010-04-21'
}
}
nassert.assert(actual, expected); // should pass
Le lien: n-assert
L'une des solutions possibles est d'obtenir la liste de tous les champs 'expected' objet et supprimer de' actual' objet tous champs, attendez 'expectedFields'. Après cela, affirmez-les. – alexmac
@alexmac Ça sonne bien. – musicliftsme