在Sails.js中,我们创建了一个围绕日志记录功能的包装器,以便安全审核日志具有相同的格式和信息等。
我想对包装器进行单元测试,而包装器又调用sails.log.info
。我如何模拟/存根全局sails.log.info然后验证它是否被调用?我之前使用过proxyquire和rewire,但是他们正在将required
的模块存入文件中。
答案 0 :(得分:1)
这是JavaScript,所以你可以简单地覆盖它,然后返回原始方法
var originalLogFunction = sails.log.info;
var actualArgs;
sails.log.info = function(arg1, arg2){
actualArgs = { arg1: arg1, arg2: arg2 };
}
// call your method that you test here
sails.log.info = originalLogFunction;
// assert your actualArgs have the correct args
您只能计算方法被调用的次数
您可以查看图书馆MoqJs。它是基于Moq for C#
的思想的JavaScript模拟库