Ich habe ein node.js Modul genau für eine solche Aufgabe erstellt: Validate nur die Felder, die in erwarteten Objekt zur Verfügung gestellt werden. Im folgenden Beispiel möchte ich zwei Objekte vergleichen: actual
(es wurde von Test zurückgegeben) und expected
(erwartetes Ergebnis). Einige der Felder in actual
werden automatisch erzeugt, (_id
), also muss ich nur überprüfen, dass sie existieren und ein spezielles Format haben. Einige der Felder, die ich nicht vergleichen möchte (Telefon mit Typ work
, account.number
). So expected
Objekt enthält nur Felder für Test erforderlich:
// 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
Der Link: n-assert
Eine der möglichen Lösungen ist die Liste aller 'expected' Objektfelder zu bekommen, und entfernt von' actual' Objekt all Felder erwarten 'expectedFields'. Danach bestätige sie. – alexmac
@alexmac Klingt gut. – musicliftsme