Jest: 从 Promise 解析 return undefined
Jest: resolves return undefined from Promise
我正在使用 jest 进行测试。我想测试我函数的return:
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
returnundefined
,没法继续测试值了
我尝试添加 global.Promise = require.requireActual('promise')
,但还是不行。
你知道我做错了什么吗?
您在检查 opmlParser
函数中的错误时遇到了一些问题。您想检查是否是错误并拒绝,否则解决。
试试这个(为了清楚起见,括号中的内容,您可能需要根据您的具体情况对其进行细化):
if (err !== null) {
reject(err)
} else {
resolve({})
}
resolves
方法从 20.0.0+ 开始可用。所以它还不可用。 source
这就是为什么 return undefined
.
我正在使用 jest 进行测试。我想测试我函数的return:
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
returnundefined
,没法继续测试值了
我尝试添加 global.Promise = require.requireActual('promise')
,但还是不行。
你知道我做错了什么吗?
您在检查 opmlParser
函数中的错误时遇到了一些问题。您想检查是否是错误并拒绝,否则解决。
试试这个(为了清楚起见,括号中的内容,您可能需要根据您的具体情况对其进行细化):
if (err !== null) {
reject(err)
} else {
resolve({})
}
resolves
方法从 20.0.0+ 开始可用。所以它还不可用。 source
这就是为什么 return undefined
.