我有一个场景,我需要在String.prototype
上存根一个getter方法。在这种情况下,由NPM模块colors
定义的方法。
it('should only apply colors if enable in the .ENV file', function () {
var stringGreyStub = sinon.stub(String.prototype, 'grey').get(function(){
console.log('FAKE!');
});
Log.setLevel(1);
Log.log('Message to log.', 1);
console.log(stringGreyStub.called);
});
上述测试的输出是:
FAKE!
[28/Sep/2017:08:06:13-0700] This is some message to be logged!
false
据我所知,正在调用存根,因为正在记录FAKE!
。但是,stringGreyStub.called
的值仍为false
。我有什么想法可能做错了吗?
答案 0 :(得分:0)
这似乎只是sinon在吸气剂和制定者方面发挥作用的方式。解决方案是使用存根来获取实际的getter值,并检查是否调用了它。
it('should only apply colors if enable in the .ENV file', function () {
var getterStub = sinon.stub();
sinon.stub(String.prototype, 'grey').get(getterStub);
Log.setLevel(1);
Log.log('Message to log.', 1);
console.log(getterStub.called);
});
该解决方案见于以下github问题。