@@ -25,11 +25,13 @@ import {
2525 Type ,
2626 ɵflushModuleScopingQueueAsMuchAsPossible as flushModuleScopingQueueAsMuchAsPossible ,
2727 ɵgetUnknownElementStrictMode as getUnknownElementStrictMode ,
28+ ɵgetUnknownPropertyStrictMode as getUnknownPropertyStrictMode ,
2829 ɵRender3ComponentFactory as ComponentFactory ,
2930 ɵRender3NgModuleRef as NgModuleRef ,
3031 ɵresetCompiledComponents as resetCompiledComponents ,
3132 ɵsetAllowDuplicateNgModuleIdsForTest as setAllowDuplicateNgModuleIdsForTest ,
3233 ɵsetUnknownElementStrictMode as setUnknownElementStrictMode ,
34+ ɵsetUnknownPropertyStrictMode as setUnknownPropertyStrictMode ,
3335 ɵstringify as stringify ,
3436} from '@angular/core' ;
3537
@@ -39,7 +41,7 @@ import {ComponentFixture} from './component_fixture';
3941import { MetadataOverride } from './metadata_override' ;
4042import { R3TestBedCompiler } from './r3_test_bed_compiler' ;
4143import { TestBed } from './test_bed' ;
42- import { ComponentFixtureAutoDetect , ComponentFixtureNoNgZone , ModuleTeardownOptions , TEARDOWN_TESTING_MODULE_ON_DESTROY_DEFAULT , TestBedStatic , TestComponentRenderer , TestEnvironmentOptions , TestModuleMetadata , THROW_ON_UNKNOWN_ELEMENTS_DEFAULT } from './test_bed_common' ;
44+ import { ComponentFixtureAutoDetect , ComponentFixtureNoNgZone , ModuleTeardownOptions , TEARDOWN_TESTING_MODULE_ON_DESTROY_DEFAULT , TestBedStatic , TestComponentRenderer , TestEnvironmentOptions , TestModuleMetadata , THROW_ON_UNKNOWN_ELEMENTS_DEFAULT , THROW_ON_UNKNOWN_PROPERTIES_DEFAULT } from './test_bed_common' ;
4345
4446let _nextRootElementId = 0 ;
4547
@@ -67,6 +69,12 @@ export class TestBedRender3 implements TestBed {
6769 */
6870 private static _environmentErrorOnUnknownElementsOption : boolean | undefined ;
6971
72+ /**
73+ * "Error on unknown properties" option that has been configured at the environment level.
74+ * Used as a fallback if no instance-level option has been provided.
75+ */
76+ private static _environmentErrorOnUnknownPropertiesOption : boolean | undefined ;
77+
7078 /**
7179 * Teardown options that have been configured at the `TestBed` instance level.
7280 * These options take precedence over the environment-level ones.
@@ -79,12 +87,24 @@ export class TestBedRender3 implements TestBed {
7987 */
8088 private _instanceErrorOnUnknownElementsOption : boolean | undefined ;
8189
90+ /**
91+ * "Error on unknown properties" option that has been configured at the `TestBed` instance level.
92+ * This option takes precedence over the environment-level one.
93+ */
94+ private _instanceErrorOnUnknownPropertiesOption : boolean | undefined ;
95+
8296 /**
8397 * Stores the previous "Error on unknown elements" option value,
8498 * allowing to restore it in the reset testing module logic.
8599 */
86100 private _previousErrorOnUnknownElementsOption : boolean | undefined ;
87101
102+ /**
103+ * Stores the previous "Error on unknown properties" option value,
104+ * allowing to restore it in the reset testing module logic.
105+ */
106+ private _previousErrorOnUnknownPropertiesOption : boolean | undefined ;
107+
88108 /**
89109 * Initialize the environment for testing with a compiler factory, a PlatformRef, and an
90110 * angular module. These are common to every test in the suite.
@@ -259,6 +279,8 @@ export class TestBedRender3 implements TestBed {
259279
260280 TestBedRender3 . _environmentErrorOnUnknownElementsOption = options ?. errorOnUnknownElements ;
261281
282+ TestBedRender3 . _environmentErrorOnUnknownPropertiesOption = options ?. errorOnUnknownProperties ;
283+
262284 this . platform = platform ;
263285 this . ngModule = ngModule ;
264286 this . _compiler = new R3TestBedCompiler ( this . platform , this . ngModule ) ;
@@ -294,6 +316,9 @@ export class TestBedRender3 implements TestBed {
294316 // Restore the previous value of the "error on unknown elements" option
295317 setUnknownElementStrictMode (
296318 this . _previousErrorOnUnknownElementsOption ?? THROW_ON_UNKNOWN_ELEMENTS_DEFAULT ) ;
319+ // Restore the previous value of the "error on unknown properties" option
320+ setUnknownPropertyStrictMode (
321+ this . _previousErrorOnUnknownPropertiesOption ?? THROW_ON_UNKNOWN_PROPERTIES_DEFAULT ) ;
297322
298323 // We have to chain a couple of try/finally blocks, because each step can
299324 // throw errors and we don't want it to interrupt the next step and we also
@@ -309,6 +334,7 @@ export class TestBedRender3 implements TestBed {
309334 this . _testModuleRef = null ;
310335 this . _instanceTeardownOptions = undefined ;
311336 this . _instanceErrorOnUnknownElementsOption = undefined ;
337+ this . _instanceErrorOnUnknownPropertiesOption = undefined ;
312338 }
313339 }
314340 }
@@ -336,10 +362,13 @@ export class TestBedRender3 implements TestBed {
336362 // This ensures that we don't carry them between tests.
337363 this . _instanceTeardownOptions = moduleDef . teardown ;
338364 this . _instanceErrorOnUnknownElementsOption = moduleDef . errorOnUnknownElements ;
365+ this . _instanceErrorOnUnknownPropertiesOption = moduleDef . errorOnUnknownProperties ;
339366 // Store the current value of the strict mode option,
340367 // so we can restore it later
341368 this . _previousErrorOnUnknownElementsOption = getUnknownElementStrictMode ( ) ;
342369 setUnknownElementStrictMode ( this . shouldThrowErrorOnUnknownElements ( ) ) ;
370+ this . _previousErrorOnUnknownPropertiesOption = getUnknownPropertyStrictMode ( ) ;
371+ setUnknownPropertyStrictMode ( this . shouldThrowErrorOnUnknownProperties ( ) ) ;
343372 this . compiler . configureTestingModule ( moduleDef ) ;
344373 }
345374
@@ -532,6 +561,13 @@ export class TestBedRender3 implements TestBed {
532561 THROW_ON_UNKNOWN_ELEMENTS_DEFAULT ;
533562 }
534563
564+ shouldThrowErrorOnUnknownProperties ( ) : boolean {
565+ // Check if a configuration has been provided to throw when an unknown property is found
566+ return this . _instanceErrorOnUnknownPropertiesOption ??
567+ TestBedRender3 . _environmentErrorOnUnknownPropertiesOption ??
568+ THROW_ON_UNKNOWN_PROPERTIES_DEFAULT ;
569+ }
570+
535571 shouldTearDownTestingModule ( ) : boolean {
536572 return this . _instanceTeardownOptions ?. destroyAfterEach ??
537573 TestBedRender3 . _environmentTeardownOptions ?. destroyAfterEach ??
0 commit comments