2017-08-22 3 views
1

Der Versuch, eine statische Methode, die eine Instanz eines Objekts mit den angegebenen Argumenten zurückgibt, in Einheiten zu testen. Ich möchte nur die Eigenschaften testen, die an diese Methode übergeben wurden, da das Objekt Felder wie createdAt enthält, die ich automatisch ausschließen möchte.Mocha: Vergleichen von zwei Objekten, Ausschließen von Feldern wie createdAt

Muss ich in diesem Fall gegen einzelne Eigenschaften testen, indem ich etwas wie expect().to.have.property() verwende, oder gibt es eine Ein-Zeilen-Lösung?

http://chaijs.com/api/bdd/#method_property

+0

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

+0

@alexmac Klingt gut. – musicliftsme

Antwort

1

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

Verwandte Themen