From 9eca71caa1674c31f9cc5d4e86c03f10b59e0a00 Mon Sep 17 00:00:00 2001 From: Rob Waller Date: Tue, 14 Jul 2020 19:41:05 +0100 Subject: [PATCH] fix(std/testing): assertThrows inheritance (#6623) --- std/testing/asserts.ts | 4 ++-- std/testing/asserts_test.ts | 24 ++++++++++++++++++++++-- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/std/testing/asserts.ts b/std/testing/asserts.ts index b1164090d4..2a13581435 100644 --- a/std/testing/asserts.ts +++ b/std/testing/asserts.ts @@ -394,7 +394,7 @@ export function assertThrows( if (e instanceof Error === false) { throw new AssertionError("A non-Error object was thrown."); } - if (ErrorClass && !(Object.getPrototypeOf(e) === ErrorClass.prototype)) { + if (ErrorClass && !(e instanceof ErrorClass)) { msg = `Expected error to be instance of "${ErrorClass.name}", but was "${ e.constructor.name }"${msg ? `: ${msg}` : "."}`; @@ -438,7 +438,7 @@ export async function assertThrowsAsync( if (e instanceof Error === false) { throw new AssertionError("A non-Error object was thrown or rejected."); } - if (ErrorClass && !(Object.getPrototypeOf(e) === ErrorClass.prototype)) { + if (ErrorClass && !(e instanceof ErrorClass)) { msg = `Expected error to be instance of "${ErrorClass.name}", but got "${ e.name }"${msg ? `: ${msg}` : "."}`; diff --git a/std/testing/asserts_test.ts b/std/testing/asserts_test.ts index c7fa5a737f..c3059ebac4 100644 --- a/std/testing/asserts_test.ts +++ b/std/testing/asserts_test.ts @@ -275,12 +275,12 @@ Deno.test("testingAssertFailWithWrongErrorClass", function (): void { (): void => { fail("foo"); }, - Error, + TypeError, "Failed assertion: foo" ); }, AssertionError, - `Expected error to be instance of "Error", but was "AssertionError"` + `Expected error to be instance of "TypeError", but was "AssertionError"` ); }); @@ -626,3 +626,23 @@ Deno.test("assert diff formatting", () => { ]` ); }); + +Deno.test("Assert Throws Parent Error", () => { + assertThrows( + () => { + throw new AssertionError("Fail!"); + }, + Error, + "Fail!" + ); +}); + +Deno.test("Assert Throws Async Parent Error", () => { + assertThrowsAsync( + () => { + throw new AssertionError("Fail!"); + }, + Error, + "Fail!" + ); +});