jupiter / simple-mock

Super simple stubs and spies with 1-step sandbox restore
MIT License
87 stars 12 forks source link

Create rejectWith Promises when mock is called #24

Closed HCanber closed 7 years ago

HCanber commented 7 years ago

Fixes #22

Since node 6.9, if a promise is rejected and no error handler is attached to the promise within a turn of the event loop, or if an error handler was attached to it later than one turn of the Node.js event loop, then warnings are logged (and in future versions of node it will terminate the node process).

Since rejectWith creates the promise when it is called, and not when the mock is called, this means that the following code will generate warnings:

const mock = simple.mock().rejectWith(new Error())
setTimeout(() => mock().then( () =>..., err => ...), 0)

This PR demonstrates this by first adding a test, and then fixes it by create the rejected promise when the mock is called.