EADDRINUSE при просмотре тестов с мокко и супертестом

Я пытаюсь выполнить тесты BDD, чтобы охватить свой код, но получаю следующую ошибку: Я пытаюсь выполнить тесты BDD, чтобы охватить свой код, но получаю следующую ошибку: Я пытаюсь выполнить тесты BDD, чтобы охватить свой код, но получаю следующую ошибку: Я пытаюсь выполнить тесты BDD, чтобы охватить свой код, но получаю следующую ошибку: Я пытаюсь выполнить тесты BDD, чтобы охватить свой код, но получаю следующую ошибку: app.js

"use strict";

var app = require("express")();

var pg = require("pg");
var http = require("http");
var https = require("https");


require("./config/config");
var server;
swaggerTools.initializeMiddleware(swaggerConfig, function (middleware) {
  // Interpret Swagger resources and attach metadata to request - must be first in swagger-tools middleware chain
  app.use(middleware.swaggerMetadata());
  var sayHello = ( type ) => {
    return ( ) => {
      console.info( `${global.gConfig.app.name} (${global.gConfig.app.desc}) listening for ${type.toUpperCase()} connections on port ${global.gConfig.ports[type]}`);
    }
  }
  if ( global.gConfig.ports.http ) {
     http.createServer(app).listen( global.gConfig.ports.http, sayHello('http') );
     server=app.listen(global.gConfig.ports.http);
  }
  if ( global.gConfig.ports.https ) {
     server=app.listen(global.gConfig.ports.https);
  }
});
module.exports = {
  serve:server,
  app:app
};

test.js

let chai = require('chai');
let expect = require('chai').expect; 
let chaiHttp = require('chai-http');
var app=require('../').app;
var server=require('../').server;
let should = require('chai').should; 
var request = require("supertest").agent(server);
chai.use(chaiHttp);

describe('Caracteristiques', () => {
    after(function (done) {
        server.close();
        done();
    });
    it('returns an array of Carateristiques', (done) => {
        //chai.request(server)
        request
            .get('caracteristiques')
            .set('Authorization', 'Bearer token')
            .end((err, res) => {
                 console.info("res :",res);
                 expect(res.status).to.equal(200); 
              done();
            });
      });
})

Ошибка :

1) Uncaught error outside test suite:
 Uncaught Error: listen EADDRINUSE :::3001
  at Object._errnoException (util.js:992:11)
  at _exceptionWithHostPort (util.js:1014:20)
  at Server.setupListenHandle [as _listen2] (net.js:1355:14)
  at listenInCluster (net.js:1396:12)
  at Server.listen (net.js:1480:7)
  at Function.listen (node_modules\express\lib\application.js:618:24)
  at C:\Users\zya\Documents\Tdbc-api\tdbc-api\app.js:75:17
  at C:\Users\zya\Documents\Tdbc-api\tdbc-api\node_modules\swagger-tools\index.js:85:7
  at cbWrapper (node_modules\swagger-tools\lib\specs.js:1023:5)
  at validateSwagger2_0 (node_modules\swagger-tools\lib\specs.js:1018:3)
  at validateSemantically (node_modules\swagger-tools\lib\specs.js:1028:5)
  at C:\Users\zya\Documents\Tdbc-api\tdbc-api\node_modules\swagger-tools\lib\specs.js:1221:7
  at C:\Users\zya\Documents\Tdbc-api\tdbc-api\node_modules\swagger-tools\lib\specs.js:1061:29
  at C:\Users\zya\Documents\Tdbc-api\tdbc-api\node_modules\swagger-tools\lib\specs.js:707:12
  at C:\Users\zya\Documents\Tdbc-api\tdbc-api\node_modules\swagger-tools\lib\specs.js:683:9
  at <anonymous>
  at process._tickCallback (internal/process/next_tick.js:188:7)
  at startup (bootstrap_node.js:191:16)
  at bootstrap_node.js:612:3

2) Caracteristiques
   returns an array of Carateristiques:
 TypeError: Cannot read property 'address' of undefined
  at Test.serverAddress (node_modules\supertest\lib\test.js:55:18)
  at new Test (node_modules\supertest\lib\test.js:36:12)
  at TestAgent.(anonymous function) [as get] (node_modules\supertest\lib\agent.js:52:15)
  at Context.it (test\caracteristiques.js:31:14)

3) Caracteristiques
   "after all" hook:
 TypeError: Cannot read property 'close' of undefined
  at Context.<anonymous> (test\caracteristiques.js:23:16)

Я думаю, что идентификатор настройки хорош, может кто-нибудь, пожалуйста?

порт 3001 можно использовать только один раз. Вам необходимо обновить свои конфигурации, чтобы использовать разные порты.

Rastalamm 18.12.2018 16:47

используются два порта, 3001 и 3000, для среды разработки используется 3001

user9192087 18.12.2018 16:49

Что ж, что-то использует порт 3001.

Dave Newton 18.12.2018 17:01

это проблема, потому что сервер и тест используют один и тот же порт

user9192087 18.12.2018 17:08

Попробуйте этот отвечать, чтобы остановить мокко.

avatar 07.10.2019 15:58
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
5
1 178
1

Ответы 1

Я думаю, что это не работает, потому что вы пытаетесь включить сервер в том же порту каждый раз, когда выполняется ваш тест. [Или ваш сервер работает, пока вы выполняете тесты].

Попробуйте выключить сервер на время выполнения тестов.

К вашему сведению: вы экспортируете основной модуль вашего сервера как «serve», затем вы пытаетесь подключиться к нему, используя require (path) .server вместо require (path) .serve;

Другие вопросы по теме