【发布时间】:2017-09-11 00:15:10
【问题描述】:
我正在使用 jest 进行测试。我想测试我的函数的返回:
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({})
})
})
}
Promise 解析 {} 以便在简单的测试用例中。
所以,我想测试以下函数,我希望结果是一个包含 {} 的承诺。
我有以下代码:
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返回undefined,所以我无法继续测试值。
我尝试添加global.Promise = require.requireActual('promise'),但还是不行。
你知道我做错了什么吗?
【问题讨论】:
-
我的回答不正确,抱歉,我一定是在考虑不同的测试框架。 FWIW,当人们试图帮助你时,即使他们错了,“无论如何,这甚至不能回答我的问题。”这不是礼貌的回应。
-
对不起,我不想粗鲁,我只是想标记一下您的答案与问题不匹配的点。但是,是的,配方很糟糕。抱歉,感谢您尝试帮助我。
标签: javascript node.js promise jestjs babel-polyfill