Nano Hash - криптовалюты, майнинг, программирование

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.log( `${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.log("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)

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

18.12.2018

  • порт 3001 можно использовать только один раз. Вам нужно обновить свои конфиги, чтобы использовать разные порты. 18.12.2018
  • используются два порта, 3001 и 3000 для среды разработки, я использую 3001 18.12.2018
  • Что-то использует порт 3001. 18.12.2018
  • это проблема, потому что сервер и тест используют один и тот же порт 18.12.2018
  • Попробуйте этот ответ, чтобы остановить мокко. 07.10.2019

Ответы:


1

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

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

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

18.12.2018
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..