Es gibt eine einfache Methode ist, die einen Fehler wirft:Mokka/Chai: Test für genaue throw Fehlerergebnis
methods.js
insertItem = new ValidatedMethod({
name : 'article.insert.item',
validate: new SimpleSchema({
parent: { type: SimpleSchema.RegEx.Id }
value : { type: String }
}).validator(),
run({ parent, value}) {
var isDisabled = true
if (isDisabled)
throw new Meteor.Error('example-error', 'There is no reason for this error :-)')
}
})
Jetzt möchte ich eine Mokka Test tun für diesen Fehler. So kam ich mit diesem nach oben, die funktioniert:
server.test.js
it('should not add item, if element is disabled', (done) => {
const value = 'just a string'
function expectedError() {
insertItem.call(
{
parent: '12345',
value
}
)
}
expect(expectedError).to.throw
done()
})
Bis zu diesem Punkt alles funktioniert.
Das Problem
Aber ich würde für die genaue Fehlermeldung testen möchten.
Ich habe bereits versucht
expect(expectedError).to.throw(new Meteor.Error('example-error', 'There is no reason for this error :-)'))
Aber es gibt mir ein Versagen Test:
Error: expected [Function: expectedError] to throw 'Error: There is no reason for this error :-) [example-error]'
Sie haben auch 'var disabled = true' ABER' if (isDisabled) 'in der nächsten Zeile - aber ich nehme an, dies ist nur Beispielcode nicht von Ihrer Funktion kopiert – rubie
Damit ist der Test immer noch fehlgeschlagen:' Fehler: erwartet [Funktion: expectedError] einen Fehler zu werfen " – user3142695
@ user3142695 Ich habe das oben ein paar Mal mit Ihrem Beispielcode getestet und es wirft den richtigen Fehler. Haben Sie beide die 'neuen' und die' var disabled'/'if (isDisabled) Teile entfernt? – rubie