Vol*_*il3 5 node.js typescript jestjs axios
我是 Node/Jest 世界的新手。我正在尝试测试以下功能:
\nexport 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}\nRun Code Online (Sandbox Code Playgroud)\n在测试中我的做法如下:
\ndescribe('Product', () => {\n it('visitPage', async () => {\n const pageData = await visitPage('https://example.com'); \n // console.log(pageData)\n expect(pageData).toBe(false);\n });\n});\nRun Code Online (Sandbox Code Playgroud)\n测试通过,但随后打印以下内容:
\n所有测试套件。
\nJest 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\nRun Code Online (Sandbox Code Playgroud)\n
按照此处nextTick所述在 axios 调用之前使用
await process.nextTick(() => {})
Run Code Online (Sandbox Code Playgroud)
这解决了我的问题。
| 归档时间: |
|
| 查看次数: |
696 次 |
| 最近记录: |