npm 模块功能拦截。特别是基本模块“dns”

gat*_*byz 5 dns node.js npm nock

import DNS from 'dns'

DNS.resolveTxt('test-website.com', (err, addresses) => {
      console.log(err, addresses);
})
Run Code Online (Sandbox Code Playgroud)

以上是节点如何解析网址的示例用法。我想为'dns'构建一个nock库,并拦截处理程序。(这将用于我为 Route53 创建的 AWS nock 库中,因此这不是用于“测试”目的)。我看到了一些有意义的 rewiremock 东西,但这似乎是一个测试模拟工具。有没有办法实现这种拦截?我想弄清楚如何替换整个处理程序本身,而不是在两者之间拦截它并转移到原始方法。*

澄清:我想直接使用 DNS.resolveTxt 并且addresses我从响应中得到的将是我的自定义。

澄清 #2:我想理想地锁定整个 DNS 库。resolveTxt 只是一个例子。

澄清 #3:我想在我的服务中全局模拟 DNS。不仅仅是一次性使用。

澄清 #4(重要):我认为我的问题是如何拦截对 DNS 的 tcp 请求。sudo tcpdump host 1.1.1.1显示从我的计算机设置的 DNS 服务器的当前调用。例如,如果我使用 dns.setServer('1.2.3.4') 并执行一个sudo tcpdump host 1.2.3.4,则每次调用时DNS.resolveTxt,我都可以看到通话记录。知道如何拦截吗?