Mocha not exiting after test


node.js Problem Overview

I'm starting with tests in Node. Using mocha, chai and nock (to intercept external HTTP api calls).

I have written 3 tests, all of them are a pass, however, when I added the 3rd test, mocha stopped exiting after running the tests, with no error or indication of anything wrong.

If I comment the 3rd test, mocha exits just fine.

This is the test causing the 'issue':

describe('tokenizer.processFile(req, \'tokenize\')', () => {

    it('should tokenize a file', async () => {

        req = {
            file: {
                originalname: 'randomcards.txt',
                buffer: cardsFile_buffer
            user: {
                displayName: user

        expect(Buffer.from(await tokenizer.processFile(req, 'tokenize'))).to.deep.equal(tokensFile_buffer);



Again, that test is a pass, which baffles me.

Here's the code of tokenizer.processFile:

processFile: function(req, whatTo){`Request to ${whatTo} ${req.file.originalname} received. Made by: ${req.user.displayName}`);

        return new Promise(function(resolve, reject){
            const lines = [], responses = [];
            const lineReader = require('readline').createInterface({
                input: require('streamifier').createReadStream(req.file.buffer)

            lineReader.on('line', line => {

            lineReader.on('close', async () => {
                //process every line sequentially

                try {

                    //ensure DB connected to mass insert
                    await db_instance.get_pool();

                    for(const line of lines) {
                        var response;
                        req.current_value = line;
                        if (whatTo == 'tokenize'){
                            response = await Tokenize(line);
                            db_instance.insertAction(req, 'tokenize', response);
                        else if (whatTo == 'detokenize'){
                  `Request to detokenize ${line} received. Made by: ${req.user.displayName}`);
                            response = await Detokenize(line);
                            db_instance.insertAction(req, 'detokenize', line);




Functions Tokenize(value) and Detokenize(value) are also called in the other 2 tests, which when run, mocha exits just fine.

Any idea what's causing this?

Mocha version: 5.1.1

node.js Solutions

Solution 1 - node.js

I know it is a bit late to answer this, but I was facing a similar problem and saw your post.

In mocha 4.0.0, they changed the behavior of tests on finalization.From here:

> If the mocha process is still alive after your tests seem "done", then your tests have scheduled something to happen (asynchronously) and haven't cleaned up after themselves properly. Did you leave a socket open?

In your case, it seems like a call to createReadStream() was never closed.

So, you have 2 options:

Option A: Close the fs and other streams open (recommended)

Option B: Run mocha with the --exit option.


All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionFede E.View Question on Stackoverflow
Solution 1 - node.jsAlex MantautView Answer on Stackoverflow