UNPKG

@push.rocks/smartexpect

Version:

A testing library to manage expectations in code, offering both synchronous and asynchronous assertion methods.

56 lines 3.58 kB
import { Assertion } from '../smartexpect.classes.assertion.js'; /** * Namespace for function-specific matchers */ export class FunctionMatchers { constructor(assertion) { this.assertion = assertion; } toThrow(expectedError) { return this.assertion.customAssertion((value) => { let threw = false; try { value(); } catch (e) { threw = true; if (expectedError) { if (typeof expectedError === 'function') { return e instanceof expectedError; } return e === expectedError; } } return threw; }, `Expected function to throw${expectedError ? ` ${expectedError}` : ''}`); } /** * Assert thrown error message matches the given regex */ toThrowErrorMatching(regex) { return this.assertion.customAssertion((value) => { try { value(); } catch (e) { return regex.test(e && e.message); } return false; }, `Expected function to throw error matching ${regex}`); } /** * Assert thrown error message equals the given string */ toThrowErrorWithMessage(expectedMessage) { return this.assertion.customAssertion((value) => { try { value(); } catch (e) { return e && e.message === expectedMessage; } return false; }, `Expected function to throw error with message "${expectedMessage}"`); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9uYW1lc3BhY2VzL2Z1bmN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUdoRTs7R0FFRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsWUFBb0IsU0FBaUM7UUFBakMsY0FBUyxHQUFULFNBQVMsQ0FBd0I7SUFBRyxDQUFDO0lBRXpELE9BQU8sQ0FBQyxhQUFtQjtRQUN6QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUNuQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1IsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ2xCLElBQUksQ0FBQztnQkFDRixLQUFrQixFQUFFLENBQUM7WUFDeEIsQ0FBQztZQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7Z0JBQ2hCLEtBQUssR0FBRyxJQUFJLENBQUM7Z0JBQ2IsSUFBSSxhQUFhLEVBQUUsQ0FBQztvQkFDbEIsSUFBSSxPQUFPLGFBQWEsS0FBSyxVQUFVLEVBQUUsQ0FBQzt3QkFDeEMsT0FBTyxDQUFDLFlBQVksYUFBYSxDQUFDO29CQUNwQyxDQUFDO29CQUNELE9BQU8sQ0FBQyxLQUFLLGFBQWEsQ0FBQztnQkFDN0IsQ0FBQztZQUNILENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsRUFDRCw2QkFBNkIsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDeEUsQ0FBQztJQUNKLENBQUM7SUFDRDs7T0FFRztJQUNILG9CQUFvQixDQUFDLEtBQWE7UUFDaEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FDbkMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNSLElBQUksQ0FBQztnQkFDRixLQUFrQixFQUFFLENBQUM7WUFDeEIsQ0FBQztZQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7Z0JBQ2hCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3BDLENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsRUFDRCw2Q0FBNkMsS0FBSyxFQUFFLENBQ3JELENBQUM7SUFDSixDQUFDO0lBQ0Q7O09BRUc7SUFDSCx1QkFBdUIsQ0FBQyxlQUF1QjtRQUM3QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUNuQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1IsSUFBSSxDQUFDO2dCQUNGLEtBQWtCLEVBQUUsQ0FBQztZQUN4QixDQUFDO1lBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztnQkFDaEIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sS0FBSyxlQUFlLENBQUM7WUFDNUMsQ0FBQztZQUNELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxFQUNELGtEQUFrRCxlQUFlLEdBQUcsQ0FDckUsQ0FBQztJQUNKLENBQUM7Q0FDRiJ9