Я не разработчик, но специалист по обеспечению качества и новичок в 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 файл, хотя мне разрешено в некоторой степени его подправить. Не могли бы вы помочь мне с решением проблемы тайм-аута?