Nock@14 破坏了 ClientRequest.setTimeout()
作者: TrevorKarjanis创建于 2025年10月15日更新于 2026年7月26日
标签bug
import http from 'http'; import nock from 'nock';
main();
async function main() { let listener;
try { const delay = 1000; const url = 'http://localhost:81'; nock(url).get('/').delay(delay).reply(200);
let failures = 0;
let success = await request(url, delay, true);
if (!success) failures += 1;
nock(url).get('/').delay(delay).reply(200);
success = await request(url, delay, false);
if (!success) failures += 1;
if (failures) console.log('\n' + failures + ' tests failed');
else console.log('\nAll tests passed');
} finally { listener?.close(); } }
async function request(url, delay, option = true) {
return new Promise(resolve => {
const ms = delay / 2;
const timeout = option ? ms : undefined;
const request = http.request(url, { timeout }, response => {
console.log(Response received with status code ${response.statusCode});
console.log('Request failed to timeout');
});
if (timeout) {
console.log('Testing timeout set with http.request option');
} else {
console.log('\nTesting timeout with内容来源: nock/nock