Axios 连接不允许 Jest 被终止

Vol*_*il3 5 node.js typescript jestjs axios

我是 Node/Jest 世界的新手。我正在尝试测试以下功能:

\n
export async function visitPage(url: string) {\n    const cookie =  ''\n    let headers = {\n    'authority': 'www.example.com',\n    'pragma': 'no-cache',\n    'cache-control': 'no-cache',\n    'upgrade-insecure-requests': '1',\n    'dnt': '1',\n    'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36',\n    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',\n    'sec-fetch-site': 'same-origin',\n    'sec-fetch-mode': 'navigate',\n    'sec-fetch-user': '?1',\n    'sec-fetch-dest': 'document',\n    'rtt': '350',\n    'downlink': '1.45',\n    'ect': '3g',\n    'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="96", "Google Chrome";v="96"',\n    'sec-ch-ua-mobile': '?0',\n    'sec-ch-ua-platform': '"macOS"',\n    'referer': 'https://google.com',\n    'accept-language': 'en-US,en;q=0.9,ur;q=0.8,zh-CN;q=0.7,zh;q=0.6',    \n    'Accept-Encoding': 'gzip',\n    'cookie': cookie,\n\n    }\n\n    try {\n        const response = await axios({\n            method: 'get',\n            url: url,\n            headers: headers\n        });\n        if (response.status == 200) {\n            let html = response.data\n            if(html.includes('Hello, Sign in')) {\n                // console.log('Not logged in')\n                return false\n              }\n        }\n    } catch(error) {\n        if (error.response) {\n            console.log(error.response.data);   \n        }\n    }\n    \n    return true;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

在测试中我的做法如下:

\n
describe('Product', () => {\n    it('visitPage', async () => {\n        const pageData = await visitPage('https://example.com'); \n        // console.log(pageData)\n        expect(pageData).toBe(false);\n    });\n});\n
Run Code Online (Sandbox Code Playgroud)\n

测试通过,但随后打印以下内容:

\n

所有测试套件。

\n
Jest has detected the following 1 open handle potentially keeping Jest from exiting:\n\n\n\n\xe2\x97\x8f  TLSWRAP\n\n      31 |\n      32 |     try {\n    > 33 |         const response = await axios({\n         |                                     ^\n      34 |             method: 'get',\n      35 |             url: url,\n      36 |             headers: headers\n
Run Code Online (Sandbox Code Playgroud)\n

Red*_*d.o 1

按照此处nextTick所述在 axios 调用之前使用

await process.nextTick(() => {})
Run Code Online (Sandbox Code Playgroud)

这解决了我的问题。