diff --git a/packages/runtime-test/src/jestUtils.ts b/packages/runtime-test/src/jestUtils.ts index e8997103..6ebbcb91 100644 --- a/packages/runtime-test/src/jestUtils.ts +++ b/packages/runtime-test/src/jestUtils.ts @@ -11,6 +11,7 @@ declare global { export function mockWarn() { expect.extend({ toHaveBeenWarned(received: string) { + asserted.add(received) const passed = warn.mock.calls.some( args => args[0].indexOf(received) > -1 ) @@ -30,6 +31,7 @@ export function mockWarn() { }, toHaveBeenWarnedLast(received: string) { + asserted.add(received) const passed = warn.mock.calls[warn.mock.calls.length - 1][0].indexOf(received) > -1 if (passed) { @@ -48,6 +50,7 @@ export function mockWarn() { }, toHaveBeenWarnedTimes(received: string, n: number) { + asserted.add(received) let found = 0 warn.mock.calls.forEach(args => { if (args[0].indexOf(received) > -1) { @@ -71,13 +74,29 @@ export function mockWarn() { }) let warn: jest.SpyInstance + const asserted: Set = new Set() beforeEach(() => { + asserted.clear() warn = jest.spyOn(console, 'warn') warn.mockImplementation(() => {}) }) afterEach(() => { + const assertedArray = Array.from(asserted) + const nonAssertedWarnings = warn.mock.calls + .map(args => args[0]) + .filter(received => { + return !assertedArray.some(assertedMsg => { + return received.indexOf(assertedMsg) > -1 + }) + }) warn.mockRestore() + if (nonAssertedWarnings.length) { + nonAssertedWarnings.forEach(warning => { + console.warn(warning) + }) + throw new Error(`test case threw unexpected warnings.`) + } }) }