簡體   English   中英

為什么添加console.log語句會阻止測試超時?

[英]Why does adding console.log statements prevent test timeouts?

我有一些在本地運行良好的代碼,使用Supertest進行測試,但是當在CircleCI上運行相同的測試時,由於超時而失敗。

有問題的代碼是

for (const id of ids) {
  const urls = await scrapeLinks(id) // invokes puppeteer on a dockerised mock server
  await connectUrls(fbId, urls) // updates database using sequelize
}

在本地運行這很好。

在CircleCI上運行相同的測試,此代碼需要很長時間才能完成並且測試超時。

但是,如果我添加幾個console.log行,那么測試不會超時

for (const id of ids) {
  console.log('start', id)
  const urls = await scrapeLinks(id) // invokes puppeteer on a dockerised mock server
  console.log('urls', urls)
  await connectUrls(fbId, urls) // updates database using sequelize
  console.log('end', id)
}

運行測試可以在本地和CircleCI上正常運行。

我的簡單修復當然只是將測試的超時時間從2秒延長到5秒。

但我的問題是,為什么在每一步之后添加console.log行會使代碼更快完成?

這可能是由於CircleCI的no_output_timeout屬性,其定義為:

經過的時間命令可以在沒有輸出的情況下運行 字符串是帶有單位后綴的小數,例如“20m”,“1.25h”,“5s”(默認值:10分鍾)

因此,如果您的程序超出此屬性設置的給定時間而不提供輸出,則程序將超時。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM