আমি জেসমিনের ট্রো ম্যাচারের সাথে নিম্নলিখিতটি প্রতিস্থাপন করেছি, যা আপনাকে ব্যতিক্রমের নামের সম্পত্তি বা এর বার্তার সম্পত্তিতে মিলিয়ে দিতে দেয়। আমার জন্য এটি পরীক্ষাগুলি লিখতে সহজ করে এবং কম ভঙ্গুর করে তোলে, কারণ আমি নিম্নলিখিতগুলি করতে পারি:
throw {
name: "NoActionProvided",
message: "Please specify an 'action' property when configuring the action map."
}
এবং তারপরে নিম্নলিখিতটি দিয়ে পরীক্ষা করুন:
expect (function () {
.. do something
}).toThrow ("NoActionProvided");
এটি আমাকে টেস্টগুলি না ভেঙে পরে ব্যতিক্রম বার্তাটি ঝাপটতে দেয়, যখন গুরুত্বপূর্ণ বিষয়টি এটি প্রত্যাশিত ধরণের ব্যতিক্রম ছুঁড়ে দেয়।
এটি টো ট্রোর প্রতিস্থাপন যা এটি এর অনুমতি দেয়:
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