Je suis en train d'écrire un test pour le Jasmin Framework de Test qui s'attend à une erreur. Pour le moment je suis en utilisant un jasmin nodejs intégration à partir de github.
Dans mon module nodejs j'ai le code suivant:
throw new Error("Parsing is not possible");
Maintenant, j'essaie d'écrire un test qui attend cette erreur:
describe('my suite...', function() {
[..]
it('should not parse foo', function() {
[..]
expect(parser.parse(raw)).toThrow(new Error("Parsing is not possible"));
});
});
J'ai essayé aussi Error()
et certains autres variantes et ne peuvent tout simplement pas comprendre comment le faire fonctionner.
Voici le code du jasmin lib, où toThrow est défini:
jasmine.Matchers.prototype.toThrow = function(expected) {
var result = false;
var exception;
if (typeof this.actual != 'function') {
throw new Error('Actual is not a function');
}
try {
this.actual();
} catch (e) {
exception = e;
}
if (exception) {
result = (expected === jasmine.undefined || this.env.equals_(exception.message || exception, expected.message || expected));
}
var not = this.isNot ? "not " : "";
this.message = function() {
if (exception && (expected === jasmine.undefined || !this.env.equals_(exception.message || exception, expected.message || expected))) {
return ["Expected function " + not + "to throw", expected ? expected.message || expected : " an exception", ", but it threw", exception.message || exception].join(' ');
} else {
return "Expected function to throw an exception.";
}
};
return result;
};