加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-17 17:19:53 所属栏目:安全 来源:网络整理
导读:对于AngularJS应用程序,建议通过console.log使用$log服务.此类日志记录的一个常见用例是在运行测试时看到调试打印.问题是,angular-mocks默认静音$log,用模拟替换它.好吧,我有时需要测试我的调试打印,但我只需要经常看到它.问题是,默认行为坚持使用虚拟日志记
对于AngularJS应用程序,建议通过console.log使用$log服务.此类日志记录的一个常见用例是在运行测试时看到调试打印.问题是,angular-mocks默认静音$log,用模拟替换它.好吧,我有时需要测试我的调试打印,但我只需要经常看到它.问题是,默认行为坚持使用虚拟日志记录,我甚至没有看到恢复真实$log的正确方法.我已经做了一个jsfiddle示例来说明它,尝试运行它,同时查看devtools控制台 http://jsfiddle.net/ivan4th/EnvL9/

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之外还有什么方法可以修复它吗?

解决方法

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

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

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

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

console.log($log.log.logs)

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读