gpt4 book ai didi

node.js - 如何使用 nock 库模拟连接?

转载 作者:行者123 更新时间:2023-11-28 21:37:25 25 4
gpt4 key购买 nike

我有验证 response.connection.remoteAddress 的应用程序代码不是本地 IP,但在使用 nock 时 response.connection只是一个没有 remoteAddress 的 EventEmitter 实例属性(property)。我如何修改箭尾创建的响应?

更新:我最终改为 mock isPrivate() :

it('GET returns a 403 status code when example.com resolved to internal ip', function(done){
const scope = nock('https://example.com')
.get('/some/fetched/url')
.replyWithFile(200, FILE_CONTENT);

spyOn(ip, 'isPrivate').and.callFake(() => {
return true;
});

// this handler fetches a url, we want to throw an error if it
// resolves to an internal IP
fetch(`${env.testHost}/some-url-under-test`).then(function(response){
response.text().then(function(body){
scope.done();
expect(response.status).toBe(403);
expect(body).toEqual('Forbidden');
done();
});
});
});

最佳答案

Node 的 http.ClientRequest.connection 是一个 alias对于套接字。当前版本的 Nock 没有正确设置 connection 别名(它是 recently fixed ,但尚未发布),但是,它确实正确地创建了一个虚拟套接字 shared between the request and the responsesocket 属性上。

请记住,虚拟 Socket 对象没有远程 remoteAddress 属性,但您应该能够在创建请求和调用 之间添加一个结束

req.socket.remoteAddress = '127.0.0.1'
req.end()

关于node.js - 如何使用 nock 库模拟连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56746119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com