Jasmine의 toThrow 매처를 다음으로 바꾸면 예외의 name 속성 또는 message 속성과 일치시킬 수 있습니다. 나에게 이것은 다음을 수행 할 수 있기 때문에 테스트를보다 쉽게 작성하고 덜 취성있게 만듭니다.
throw {
name: "NoActionProvided",
message: "Please specify an 'action' property when configuring the action map."
}
그런 다음 다음을 사용하여 테스트하십시오.
expect (function () {
.. do something
}).toThrow ("NoActionProvided");
이것은 중요한 예외가 예상되는 유형의 예외를 던질 때 테스트를 중단하지 않고 나중에 예외 메시지를 조정할 수있게합니다.
이것은 이것을 허용하는 toThrow를 대체합니다.
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;
};
Function.bind
: stackoverflow.com/a/13233194/294855