Тест Мокко не запускается на Дженкинсе и завершается неудачно с ошибкой тайм-аута - PullRequest
0 голосов
/ 21 февраля 2020

Я не разработчик, но специалист по обеспечению качества и новичок в Node.js. Мне нужна помощь с тестовым набором mocha.

У меня есть Node.js 8 микросервисное приложение с тестовым набором Mocha 5.0.0, которое работает локально, но не работает с ошибкой тайм-аута на корпоративном сервере Jenkins.

Вот код:

test. js:

var assert = require('assert');
var request = require('request');

describe("My Unit Test",function(done){
    this.timeout(30000);
    // #1 Test to check if the REST app is running
        it("should find the service to be running",function(){
         request('http://my_server:myport', function (error, response, body) {
            assert.equal(response.statusCode, 200, 'REST URL is up'); 
            done();
        });  
...     
        });       
    });

Локальный выход:

> mocha test.js

  My Unit Test
     √ should find the service to be running (704ms)

  1 passing


Выход Jenkins:

[2020-02-21 09:35:28] > mocha test.js --timeout 30000
[2020-02-21 10:22:54]     1) should find the service to be running
[2020-02-21 10:22:54]   0 passing (30s)
[2020-02-21 10:22:54]   1 failing
[2020-02-21 10:22:54]   1) My Unit Test
[2020-02-21 10:22:54]        should find the service to be running:
[2020-02-21 10:22:54]      Error: Timeout of 30000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (/data/cibuild/.../workspace/test.js)
[2020-02-21 10:22:54]   
[2020-02-21 10:23:12] npm ERR! Test failed.  See above for more details.
[2020-02-21 10:23:12] Error: Command exited with status 1

Я установил тайм-аут от 3000 до 30000, но всегда получаю ошибку тайм-аута.

Вот мой пакет. json:

"scripts": {
    "start": "node main.js",
    "test": "mocha test.js --timeout 30000"

Я знаю, что request () устарел, и предпочтительным является get (), но я не могу внести слишком много изменений в тест . js файл, хотя мне разрешено в некоторой степени его подправить. Не могли бы вы помочь мне с решением проблемы тайм-аута?

1 Ответ

0 голосов
/ 21 февраля 2020

Как прокомментировал StockOverflaw, Дженкинс может не иметь доступа к вашему домену. Вы должны связаться с вашей командой DevOps. Я не слишком разбираюсь в беспорядке, который связан с микросервисной архитектурой, поэтому я воздержусь от обоснованных предположений о вашей тестовой среде.

Для вашей проблемы есть два важных вопроса: 1. Есть ли у вас правильно настроенная тестовая среда, которая всегда работает? 2. Есть ли у Дженкинса доступ к нему?

Поскольку этот тайм-аут указывает, что ни один из них не соответствует действительности. # 1 может привести к тому, что вызовы будут «потеряны», так как они никогда не отклоняются должным образом. # 2 происходит, когда у Дженкинса нет прав доступа, но WebServer отказывается от него отказаться. Я встречал несколько предприятий, которые объясняли, что это «функция безопасности», хотя я никогда не понимал ее.

На основании ваших успешных локальных тестов я бы начал с проверки №2. Для этого вам нужно захватить команду DevOps и попросить ее проверить, может ли Дженкинс получить доступ к указанному URL.

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