diff --git a/src/cdk/testing/testbed/testbed-harness-environment.ts b/src/cdk/testing/testbed/testbed-harness-environment.ts index dad8264a4aa2..f6c9d74a45fb 100644 --- a/src/cdk/testing/testbed/testbed-harness-environment.ts +++ b/src/cdk/testing/testbed/testbed-harness-environment.ts @@ -14,8 +14,11 @@ import {UnitTestElement} from './unit-test-element'; /** A `HarnessEnvironment` implementation for Angular's Testbed. */ export class TestbedHarnessEnvironment extends HarnessEnvironment { + private _destroyed = false; + protected constructor(rawRootElement: Element, private _fixture: ComponentFixture) { super(rawRootElement); + _fixture.componentRef.onDestroy(() => this._destroyed = true); } /** Creates a `HarnessLoader` rooted at the given fixture's root element. */ @@ -62,6 +65,10 @@ export class TestbedHarnessEnvironment extends HarnessEnvironment { } private async _stabilize(): Promise { + if (this._destroyed) { + throw Error('Harness is attempting to use a fixture that has already been destroyed.'); + } + this._fixture.detectChanges(); await this._fixture.whenStable(); }