@@ -31,7 +31,7 @@ export async function render<SutType, WrapperType = SutType>(
31
31
renderOptions : RenderComponentOptions < SutType > | RenderDirectiveOptions < SutType , WrapperType > = { } ,
32
32
) : Promise < RenderResult < SutType > > {
33
33
const {
34
- detectChanges = true ,
34
+ detectChanges : detectChangesOnRender = true ,
35
35
declarations = [ ] ,
36
36
imports = [ ] ,
37
37
providers = [ ] ,
@@ -42,12 +42,12 @@ export async function render<SutType, WrapperType = SutType>(
42
42
componentProperties = { } ,
43
43
componentProviders = [ ] ,
44
44
excludeComponentDeclaration = false ,
45
- routes
45
+ routes,
46
46
} = renderOptions as RenderDirectiveOptions < SutType , WrapperType > ;
47
47
48
48
TestBed . configureTestingModule ( {
49
49
declarations : addAutoDeclarations ( sut , { declarations, excludeComponentDeclaration, template, wrapper } ) ,
50
- imports : addAutoImports ( { imports, routes} ) ,
50
+ imports : addAutoImports ( { imports, routes } ) ,
51
51
providers : [ ...providers ] ,
52
52
schemas : [ ...schemas ] ,
53
53
} ) ;
@@ -66,15 +66,24 @@ export async function render<SutType, WrapperType = SutType>(
66
66
67
67
await TestBed . compileComponents ( ) ;
68
68
69
- if ( detectChanges ) {
70
- fixture . detectChanges ( ) ;
69
+ let isAlive = true ;
70
+ fixture . componentRef . onDestroy ( ( ) => ( isAlive = false ) ) ;
71
+
72
+ function detectChanges ( ) {
73
+ if ( isAlive ) {
74
+ fixture . detectChanges ( ) ;
75
+ }
76
+ }
77
+
78
+ if ( detectChangesOnRender ) {
79
+ detectChanges ( ) ;
71
80
}
72
81
73
82
const eventsWithDetectChanges = Object . keys ( fireEvent ) . reduce (
74
83
( events , key ) => {
75
84
events [ key ] = ( element : HTMLElement , options ?: { } ) => {
76
85
const result = fireEvent [ key ] ( element , options ) ;
77
- fixture . detectChanges ( ) ;
86
+ detectChanges ( ) ;
78
87
return result ;
79
88
} ;
80
89
return events ;
@@ -93,8 +102,8 @@ export async function render<SutType, WrapperType = SutType>(
93
102
const href = typeof elementOrPath === 'string' ? elementOrPath : elementOrPath . getAttribute ( 'href' ) ;
94
103
95
104
let result ;
96
- await zone . run ( ( ) => result = router . navigate ( [ basePath + href ] ) ) ;
97
- fixture . detectChanges ( ) ;
105
+ await zone . run ( ( ) => ( result = router . navigate ( [ basePath + href ] ) ) ) ;
106
+ detectChanges ( ) ;
98
107
return result ;
99
108
}
100
109
const debugElement = fixture . debugElement . query ( By . directive ( sut ) ) ;
@@ -104,7 +113,7 @@ export async function render<SutType, WrapperType = SutType>(
104
113
debugElement,
105
114
container : fixture . nativeElement ,
106
115
debug : ( element = fixture . nativeElement ) => console . log ( prettyDOM ( element ) ) ,
107
- detectChanges : ( ) => fixture . detectChanges ( ) ,
116
+ detectChanges,
108
117
...getQueriesForElement ( fixture . nativeElement , queries ) ,
109
118
...eventsWithDetectChanges ,
110
119
type : createType ( eventsWithDetectChanges ) ,
0 commit comments