I Ersetzen Sie Jasmins toThrow-Matcher durch Folgendes, mit dem Sie die Namenseigenschaft der Ausnahme oder ihre Nachrichteneigenschaft abgleichen können. Für mich macht diese Tests einfacher zu schreiben und weniger spröde, wie ich folgendes tun:
throw {
name: "NoActionProvided",
message: "Please specify an 'action' property when configuring the action map."
}
und testen Sie dann mit den folgenden:
expect (function() {
.. do something
}).toThrow ("NoActionProvided");
Diese mir Nachricht später zwicken die Ausnahme lässt, ohne zu brechen Tests, wenn die wichtige Sache ist, dass es die erwartete Art von Ausnahme warf.
Dies ist der Ersatz für toThrow, die dies ermöglicht:
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) || this.env.equals_(exception.name, 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.name || expected.message || expected : " an exception", ", but it threw", exception.name || exception.message || exception].join(' ');
} else {
return "Expected function to throw an exception.";
}
};
return result;
};
Um Argumente an die Funktion übergeben getestet, ohne eine anonyme Funktion zu verwenden, versuchen Sie 'Function.bind': http://stackoverflow.com/ a/13233194/294855 –