[英]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.