【发布时间】:2014-05-23 21:21:08
【问题描述】:
正确使用Jasmine单元测试函数的常见、正确或可接受的方法是什么?
示例承诺:
function readFile(filename, enc) {
return new Promise(function (fulfill, reject) {
fs.readFile(filename, enc, function (err, res) {
if (err) reject(err);
else fulfill(res);
});
});
}
function readJSON(filename) {
return new Promise(function (fulfill, reject) {
readFile(filename, 'utf8').done(function (res) {
try {
fulfill(JSON.parse(res));
} catch (ex) {
reject(ex);
}
}, reject);
});
}
解决方案应包含对上述示例代码的测试。谢谢!
【问题讨论】:
-
改用 mocha,mocha 支持开箱即用的 Promise,因为最近的版本,您只需返回一个 Promise,如果它拒绝,它将无法通过测试。
-
另外,promise 构造函数是安全的,你可以只使用
fulfill(JSON.parse(res))(在延迟对象中你不能这样做)。 -
@BenjaminGruenbaum try catch 在回调内部,而不是 promise 构造函数。
-
@Esailija 你当然是对的,readFile 本身就是一个承诺,但 OP 出于某种原因正在使用
.done。
标签: javascript unit-testing jasmine client-side promise