我有一个Angular日志服务,它根据环境常量覆盖console.log和其他服务,简化示例:
if(!DEBUG_ENV) {
console.log = function(){};
}
所以我的问题是如何用Jasmine测试console.log实际上是被我的服务覆盖到这个空函数。我已经嘲笑了我的常数并注入了我的服务,但我无法确定如何测试是否用Jasmine覆盖了console.log。
答案 0 :(得分:0)
我通过模拟$ window解决了这个问题,然后在我的服务中覆盖了$ window,而不是直接覆盖控制台[无论如何]:
$provide.value('$window', {
console: {
log: function(){return 'enabled'};
}
});
然后我把它注入我的服务:
inject(['$window', function($window) {
_window = $window;
}]);
然后在我的服务中,我可以做以下事情:
if(!DEBUG_ENV) {
$window.console.log = function(){return 'disabled'};
}
最后,我可以通过检查我注入的$ window模拟返回的内容来检查是否所有事情都按预期发生了'启用'或者'禁用'。
expect( _window.console.log() ).toEqual('disabled');