Javascript 笑话:解决承诺中未定义的返回
我用玩笑来测试。我想测试函数的返回:Javascript 笑话:解决承诺中未定义的返回,javascript,node.js,promise,jestjs,babel-polyfill,Javascript,Node.js,Promise,Jestjs,Babel Polyfill,我用玩笑来测试。我想测试函数的返回: 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 &&am
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
解析
返回未定义
,因此无法继续测试值
我试图添加global.Promise=require.requireActual('Promise')
,但仍然不起作用
你知道我做错了什么吗?你在检查
opmlParser
函数中的错误时遇到了一些问题。您要检查是否有错误并拒绝,否则请解决
尝试以下方法(括号表示清楚,您可能需要根据具体情况对其进行细化):
在检查
opmlParser
函数中的错误时存在一些问题。您要检查是否有错误并拒绝,否则请解决
尝试以下方法(括号表示清楚,您可能需要根据具体情况对其进行细化):
解析方法可从20.0.0+获得。因此,它还无法实现
这就是为什么它返回undefined
解析方法可从20.0.0+获得的原因。因此,它还无法实现
这就是为什么它返回未定义的
我的回答不正确,对不起,我一定在考虑另一个测试框架。FWIW,当人们试图帮助你时,即使他们错了,“不管这是什么,都不要回答我的问题。”这不是一个礼貌的回答。对不起,我不想粗鲁,我只是想指出你的答案与问题不符。但是,是的,这个公式很糟糕。对不起,谢谢你试图帮助我。我的回答不正确,对不起,我一定是在考虑另一个测试框架。FWIW,当人们试图帮助你时,即使他们错了,“不管这是什么,都不要回答我的问题。”这不是一个礼貌的回答。对不起,我不想粗鲁,我只是想指出你的答案与问题不符。但是,是的,这个公式很糟糕。对不起,谢谢你帮我。谢谢你,我还有这个问题。我用你的补丁编辑了我的帖子。@Frilox:我已经回滚了那个编辑。但事实并非如此。如果你将答案编辑到问题中,答案就会变得毫无意义,看起来只是重复了问题中的内容。谢谢,我仍然有这个问题。我用你的补丁编辑了我的帖子。@Frilox:我已经回滚了那个编辑。但事实并非如此。如果你将答案编辑到问题中,答案就会变得毫无意义,看起来它只是重复了问题中的内容。
if (err !== null) {
reject(err)
} else {
resolve({})
}