在sails.js中模拟/存根全局变量

时间:2016-05-04 07:01:42

标签: javascript unit-testing sails.js

在Sails.js中,我们创建了一个围绕日志记录功能的包装器,以便安全审核日志具有相同的格式和信息等。

我想对包装器进行单元测试,而包装器又调用sails.log.info。我如何模拟/存根全局sails.log.info然后验证它是否被调用?我之前使用过proxyquire和rewire,但是他们正在将required的模块存入文件中。

1 个答案:

答案 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模拟库