Exception checking for a function with a parameter is not supported in jasmine. But you can use the workaround below to overcome this limitation and test your functions.
describe('toThrowError test case', function() { it('test getRandomNumber function for undefined', function() { expect(function() { getRandomNumber(undefined); }).toThrowError("You must provide a number"); }); it('test getRandomNumber function for 0', function() { expect(function() { getRandomNumber(0); }).toThrowError("The maximum value must be greater than 0 and less than 100."); }); });
toThrowError allows toThrowError to select one or two parameters
- 1 Parameter - exception or type of exception
- 2 Parameters - Type of exception and exception message
An example of checking based on the type of exception:
function getRandomNumber(max) { throw new SyntaxError(); } describe('toThrowError test case', function() { it('test getRandomNumber function for undefined', function() { expect(function() { getRandomNumber(undefined); }).toThrowError(SyntaxError); }); });
Refer link for different types of exceptions.
Custom error message
The following snippet provides a sample for using custom error messages.
function getRandomNumber(max) { throw new ArgumentException(); } function ArgumentException(message) { this.name = 'ArgumentException'; this.message = message || ''; } ArgumentException.prototype = new Error(); ArgumentException.prototype.constructor = ArgumentException; describe('toThrowError test case', function() { it('test getRandomNumber function for undefined', function() { expect(function() { getRandomNumber(undefined); }).toThrowError(ArgumentException); }); });
user3037143
source share