2016-03-20 5 views
1

Ich frage mich, ob diese es einen Weg gibt:Chai-Assertion für .to.have.property ('Methode', <beliebige Funktion>); in Chai zu tun (einschließlich Optionen von Drittanbietern)

expect(obj).to.have.property('method', <any function>); 
expect(obj).to.have.property('prop', <any object>); 

Während Jasmin diese Matcher aus der Box nicht genau liefern, kann es mit dritt- erfolgen Party Jasmine matchers.

Ich würde es vorziehen, Einzeiler, die wertvolles Feedback bei einem Fehler geben kann statt

expect(obj).to.have.property('method'); 
expect(obj.method).to.be.a('function'); 
+0

gleiche Problem hier ... Ich möchte ein anrufen Funktion, die den Wert zurückgibt, den ich vergleichen möchte. – Alfeu

+0

Nur um klar zu sein: Sie möchten ein Objekt als zweites Argument geben und übereinstimmen, ob der angegebene Eigenschaftswert zu dem Objekt tief passt? – MarcoL

+0

@MarcoL Ich dachte über etwas wie 'Jasmin.An (Gegenstück) 'Gegenstück in Chai nach, das zu jedem Objekt passt, das mit ihm verglichen wird. Also kann 'obj.prop' bestehen, wenn es ein Objekt ist, und scheitern, wenn dies nicht der Fall ist. – estus

Antwort

0

Sie können es wie folgt testen:

var obj = { 
    aFunction: function() { }, aProperty: '' 
}; 
expect(typeof obj.aFunction).to.be.equals('function'); 
expect(obj.aProperty).to.exist; 
Verwandte Themen