angularjs – 为什么$log总是被角度模拟器沉默?

前端之家收集整理的这篇文章主要介绍了angularjs – 为什么$log总是被角度模拟器沉默?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
对于AngularJS应用程序,建议通过console.log使用$log服务.此类日志记录的一个常见用例是在运行测试时看到调试打印.问题是,angular-mocks默认静音$log,用模拟替换它.好吧,我有时需要测试我的调试打印,但我只需要经常看到它.问题是,默认行为坚持使用虚拟日志记录,我甚至没有看到恢复真实$log的正确方法.我已经做了一个jsfiddle示例来说明它,尝试运行它,同时查看devtools控制台 http://jsfiddle.net/ivan4th/EnvL9/

@H_404_8@

@H_404_8@

var myApp = angular.module('myApp',[]);

describe('myApp',function () {
    var element,rootScope;
    beforeEach(module('myApp'));
    it('does something',inject(function ($log) {
        $log.log("this message gets eaten by angular-mocks");
        console.log("this message is visible though");
    }));
});

跳过第一条消息,第二条消息按预期显示.
为什么会使用这种奇怪的行为,除了不使用$log之外还有什么方法可以修复它吗?@H_404_8@

解决方法

模拟$log服务旨在让您轻松测试和断言是否记录消息,具有讽刺意味的是,在运行测试时防止日志噪声到控制台.

@H_404_8@

如果您不喜欢这种行为,可以通过以下方式轻松更改:@H_404_8@

@H_404_8@

$log.log = function(message){ console.log(message);};

您可以通过执行以下操作将所有先前记录的消息输出到控制台:@H_404_8@

@H_404_8@

console.log($log.log.logs)

您可以在茉莉花之前或之后将任一方法添加到全局中.@H_404_8@

猜你在找的Angularjs相关文章