Почему тесты Мокко не прошли? Uncaught Ошибка: слушайте EADDRINUSE: адрес уже используется ::: 3000 (и Mocha's done () вызывается несколько раз) - PullRequest
0 голосов
/ 15 апреля 2020

Когда я запускаю тесты мокко

Running app as a module
Express.js server is listening on port 3000


  server
    homepage
      1) "before all" hook in "server"
      2) should respond to GET


  0 passing (17ms)
  2 failing

  1) server
       "before all" hook in "server":
     Uncaught Error: listen EADDRINUSE: address already in use :::3000 (and Mocha's done() called multiple times)
      at Server.setupListenHandle [as _listen2] (net.js:1313:16)
      at listenInCluster (net.js:1361:12)
      at Server.listen (net.js:1447:7)
      at boot (tests/index.js:8:10)
      at Context.<anonymous> (tests/index.js:24:5)
      at processImmediate (internal/timers.js:456:21)

  2) server
       homepage
         should respond to GET:
     Uncaught TypeError: Cannot read property 'status' of undefined
      at /home/miki/azatmardan/ch3/tests/index.js:32:27

Это мой index.js в папке тестов

const app = require('../app'); 
const port = require('../app').port
const superagent = require('superagent');
const expect = require('expect');
const server = require('http').createServer(app);

const boot = () => {
  server.listen(app.get('port'), () => {
    console.info(`Express server listening on port ${app.get('port')}`)
  })
}
const shutdown = () => {
  server.close()
}

console.info('Running app as a module')
exports.boot = boot
exports.shutdown = shutdown
exports.port = port


describe('server', () => {
  before(() => {
    boot()
  })

  describe('homepage', () => {
    it('should respond to GET', (done) => {
      superagent
        .get(`http://localhost:${port}`)
        .end((error, response) => {
          expect(response.status).to.equal(200)
          done()
        })
    })
  })

  after(() => {
    shutdown()
  })
}

Как решить проблему с использованием адресов? Где Mocha done () вызывается несколько раз?

Я установил supertest и изменил свой код. В любом случае, это указывает на почти такие же проблемы

  0 passing (5ms)
  2 failing

  1) server
       "before all" hook in "server":
     Uncaught Error: listen EADDRINUSE: address already in use :::3000 (and Mocha's done() called multiple times)
      at Server.setupListenHandle [as _listen2] (net.js:1313:16)
      at listenInCluster (net.js:1361:12)
      at Server.listen (net.js:1447:7)
      at boot (tests/index.js:8:10)
      at Context.<anonymous> (tests/index.js:24:5)
      at processImmediate (internal/timers.js:456:21)

  2) server
       homepage
         should respond to GET:
     TypeError: supertest.get is not a function

Что не так с .get(http://localhost: $ {port} )?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...