Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 笑话:解决承诺中未定义的返回_Javascript_Node.js_Promise_Jestjs_Babel Polyfill - Fatal编程技术网

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({})
}