UNPKG

jaribu

Version:

a simple, full-featured, JavaScript testing framework

80 lines (72 loc) 2.12 kB
/** * Function: Throws * * used to tell a test that the function run expects a thrown exception * * Parameters: * * function - function to run which should throw the exception. * expected - the expected error [optional] * message - message if failure (exception does not throw) [optional] * */ if (typeof define !== 'function') { var define = require('amdefine')(module); } define([], function (undefined) { function Throws() { } Throws.prototype.run = function (func, expected, message) { if (typeof func !== 'function') { throw new Error('throws takes at least one parameter, a function to run.'); } if (typeof expected === 'string') { message = expected; expected = undefined; } var self = this; function evaluateException (e) { if (expected) { if (e instanceof expected) { self.write(message); self.result(true); } else { self.assertAnd(e.name, expected.name, 'throws: expected error type does not match exception'); self.write(message); self.result(true); } return; } else { self.write(message); self.result(true); return; } } this.willThrow = true; if (typeof process === 'undefined') { window.addEventListener('error', function testHandler(evt) { ///console.log('throws caught exception'); if (typeof self._result === 'undefined') { // only handle exceptions for tests which are being evaluated right now // (eg. have an undefined result evaluateException(evt.error); } }); } else { process.on('uncaughtException', function testHandler(e) { ///console.log('throws caught exception'); if (typeof self._result === 'undefined') { // only handle exceptions for tests which are being evaluated right now // (eg. have an undefined result evaluateException(e); } }); } try { func(); } catch (e) { evaluateException(e); } }; return Throws; });