簡體   English   中英

開玩笑:解決Promise中未定義的收益

[英]Jest: resolves return undefined from Promise

我正在開玩笑地進行測試。 我想測試函數的返回:

const xml2js = require('xml2js')

const parser = new xml2js.Parser()

function opmlParser(xmlData) {
  return new Promise((resolve, reject) => {
    parser.parseString(xmlData, (err, data) => {
      if (err !== null && data !== null) reject(err)
      resolve({})
    })
  })
}

承諾解析{}以處於簡單的測試用例中。

因此,我想測試以下函數,並希望結果是一個包含{}
我有以下代碼:

const fs = require('fs');

test('minimal-opml', () => {
  const xmlData = fs.readFileSync('test/opml-parser/opml/test1.opml')
  return expect(opmlParser(xmlData)).resolves.toEqual({})
})

正如Jest文檔所說,我應該在匹配結果之前使用resolves語句,並使用return

但是,我遇到了一個問題:

TypeError: Cannot read property 'toEqual' of undefined

resolves return undefined ,所以我無法繼續測試值。

我試圖添加global.Promise = require.requireActual('promise') ,但仍然無法正常工作。

你知道我在做什么錯嗎?

resolves方法從20.0.0+起可用。 因此它尚不可用。 資源

這就是為什么它返回undefined

在檢查opmlParser函數中的錯誤時opmlParser一些問題。 要檢查是否存在錯誤,並拒絕,否則決心。

嘗試使用此方法(為清楚起見,請使用括號,您可能需要根據具體情況對此進行優化):

if (err !== null) {
  reject(err)
} else {
  resolve({})
}

暫無
暫無

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

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