@@ -134,9 +134,14 @@ describe('various response body types', () => {
134134 } )
135135 return response
136136 } )
137+ let resolveReadableStreamPromise : ( ) => void
138+ const readableStreamPromise = new Promise < void > ( ( resolve ) => {
139+ resolveReadableStreamPromise = resolve
140+ } )
137141 app . get ( '/readable-stream' , ( ) => {
138142 const stream = new ReadableStream ( {
139143 async start ( controller ) {
144+ await readableStreamPromise
140145 controller . enqueue ( 'Hello!' )
141146 controller . enqueue ( ' Node!' )
142147 controller . close ( )
@@ -187,15 +192,21 @@ describe('various response body types', () => {
187192
188193 it ( 'Should return 200 response - GET /readable-stream' , async ( ) => {
189194 const expectedChunks = [ 'Hello!' , ' Node!' ]
190- const res = await request ( server )
195+ const resPromise = request ( server )
191196 . get ( '/readable-stream' )
192197 . parse ( ( res , fn ) => {
198+ // response header should be sent before sending data.
199+ expect ( res . headers [ 'transfer-encoding' ] ) . toBe ( 'chunked' )
200+ resolveReadableStreamPromise ( )
201+
193202 res . on ( 'data' , ( chunk ) => {
194203 const str = chunk . toString ( )
195204 expect ( str ) . toBe ( expectedChunks . shift ( ) )
196205 } )
197206 res . on ( 'end' , ( ) => fn ( null , '' ) )
198207 } )
208+ await new Promise ( ( resolve ) => setTimeout ( resolve , 100 ) )
209+ const res = await resPromise
199210 expect ( res . status ) . toBe ( 200 )
200211 expect ( res . headers [ 'content-type' ] ) . toMatch ( 'text/plain; charset=UTF-8' )
201212 expect ( res . headers [ 'content-length' ] ) . toBeUndefined ( )
0 commit comments