Как принудительно использовать ETIMEDOUT с помощью nock
(https://github.com/node-nock/nock) и request
?
Я пробовал следовать, где nock
будет откладывать отклик на 8000 миллисекунд, тогда как время ожидания для запроса будет установлено в 5000 миллисекунд, поэтому я ожидаю увидеть ETIMEDOUT
, но это не тот случай. Код будет возвращать then block should not execute: Hello from Google!
Как использовать ETIMEDOUT с помощью колодки и библиотеки запросов
тест мокко/форс-REQ-timeout.test.js --timeout = 10000
'use strict'
const expect = require('chai').expect
const nock = require('nock')
const rp = require('request-promise')
describe('force request timeout with nock',() => {
it('should return ETIMEDOUT', (done) => {
nock('http://www.google.com')
.get('/')
.delay(8000)
.reply(200, 'Hello from Google!')
rp({
url: 'http://www.google.com',
timeout: 5000
})
.then((data) => {
console.log('then block should not execute: ', data)
})
.catch((err) => {
expect(err.cause.code).to.equal('ETIMEDOUT')
return done()
})
})
})
Есть два типа таймаутов, ETIMEDOUT и ESOCKETTIMEDOUT. Чтобы сделать его более реалистичным, ожидая, когда команда Nock будет исправлена, добавьте connect: true или connect: false соответственно. –