test("Anonymous function", function () { let stackString = (() => { return Error(); })().stack; let [header, ...stackFrames] = stackString.split("\n"); expect(header).toBe("Error"); expect(!!stackFrames[0].match(/^ at Error \(.*\/error-stack\.js:3:\d+\)$/)).toBeTrue(); expect(!!stackFrames[1].match(/^ at .*\/error-stack\.js:3:\d+$/)).toBeTrue(); expect(!!stackFrames[2].match(/^ at .*\/error-stack\.js:2:\d+$/)).toBeTrue(); }); test("Named function with message", function () { function f() { throw Error("You Shalt Not Pass!"); } try { f(); } catch (e) { let stackString = e.stack; let [header, ...stack_frames] = stackString.split("\n"); expect(header).toBe("Error: You Shalt Not Pass!"); expect(!!stack_frames[0].match(/^ at Error \(.*\/error-stack\.js:15:\d+\)$/)).toBeTrue(); expect(!!stack_frames[1].match(/^ at f \(.*\/error-stack\.js:15:\d+\)$/)).toBeTrue(); expect(!!stack_frames[2].match(/^ at .*\/error-stack\.js:18:\d+$/)).toBeTrue(); } });