How do we test asynchronous middleware with asynchronous side effects in Javascript

Viewed 34

So my middleware is somewhat like this:

const mw = async (req, res, next) => {
    await someAsyncWork();
    res.on("finish", async () => {
        await someAsyncCleanup();
    });
    next();
}

Here testing someAsyncWork() is quite easy as this is done in a sequential manner. But as you can see, I am listening to the finish event with an async listener. Testing whether the cleanup was done properly is a bit problematic. Are this kind of scenarios not testable or is there any better practice to avoid these scenarios. Or as the last resort, should someone use stubs as a replacement just to check if the listener is invoked and test the someAsyncCleanup separately?

0 Answers
Related