2016-04-19 7 views
0

Ich möchte sehen, ob ein Wert, der gleich 'x' ist, meine Funktion eine Ausnahme auslösen wird. Ich habe einen Komponententest, der prüft, ob ein Block eine Ausnahme auslöst, aber ich möchte, dass die Ausnahme nur geworfen wird, wenn das Argument = 'x' ist, nicht wenn es nur leer ist. Wie mache ich das mit Assert?Wie testen Sie den Wert eines Arguments mit Mocha und assert.throws in JavaScript?

Hier einige Code ist zu zeigen, was ich meine:

// Some function to check if a color is not transparent. 
function checkColor(color) { 
    if (color == 'transparent') { 
    throw new TypeError('cant have transparent colors!'); 
    } else { 
    return color; 
    } 
} 

Hier ist die Assertion:

assert.throws(checkColor, /cant have transparent colors!/); 

Nun weiß ich, dass Behauptung fehl, weil meine Funktion die Ausnahme nur, wenn die Farbe wirft = = 'transparent'. Wie kann ich Assertion mit Mocha und Assert testen, wie ich es möchte? Ich möchte nicht nur testen, ob Farbe! == undefiniert oder von irgendeiner Art ist. Ich möchte speziell sehen, ob die Ausnahme unter den spezifischen Umständen oben ausgelöst wird - was der einzige Umstand ist, dass die Ausnahme ausgelöst werden soll (da eine leere Farbe tatsächlich an anderer Stelle behandelt wird).

+0

Ihre Frage ist nicht klar. Fügen Sie Code zur Veranschaulichung Ihrer Anforderungen hinzu. – Amit

+0

"Ein Wert, der gleich 'x' ist, löst eine Ausnahme aus" Werte werfen keine Ausnahmen, Funktionen tun. "aber ich möchte, dass die Ausnahme nur ausgelöst wird, wenn das Argument = 'x'", dann sage deiner Funktion, dass sie eine Ausnahme auslösen soll, wenn das Argument ''x'' ist. –

Antwort

2
assert.throw(function() { iThrowError(argument) }, Error) 

Nun stellen Sie sicher, dass argument = x;

+1

Ugh ... Ich bin ein Idiot! Ich habe dieses Beispiel schon Stunden zuvor gesehen und bin völlig daneben gestanden. Ich gebe das ist erschossen, ich bin sicher, es wird funktionieren. – Jesse

Verwandte Themen