【发布时间】:2019-04-04 00:54:22
【问题描述】:
我正在尝试测试一个使用 nodejs 加密库生成随机名称的简单函数。我正在使用 sinon 在 pseudoRandomBytes 的回调中存根方法调用,但似乎没有调用存根。示例:
getFileName.js
const crypto = require('crypto');
module.exports = (req, file, cb) => {
crypto.pseudoRandomBytes(32, (err, raw) => {
try{
cb(err, err ? undefined : crypto.createHash('MD5').update(raw).digest('hex'));
} catch(err) {
cb(err);
}
});
};
测试(在 mocha 中运行)
it('Crypto Error: createHash', function () {
const crypto = require('crypto');
const expectedError = new Error('stub error occurred');
let cryptoStub = sinon.stub(crypto, 'createHash').throws(expectedError);
let callback = sinon.spy();
getFileName(null, null, callback);
cryptoStub.restore();
sinon.assert.calledWith(callback, expectedError);
});
我希望一旦createHash 被调用,上述测试就会抛出。如果我将crypto.createHash 调用移到回调之外(在pseudoRandomNumber 调用之前),它就可以正常工作。我有点新手,所以我对 sinon 和 nodejs 正在做什么的基本理解可能是完全错误的。任何帮助将不胜感激。
【问题讨论】:
-
你使用什么测试框架?
-
我在用摩卡
标签: javascript node.js sinon