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

angularjs – 我如何测试事件在角?

发布时间:2020-12-17 09:06:59 所属栏目:安全 来源:网络整理
导读:我需要测试事件被正确地发射或广播,并手动触发事件。 什么是最好的方法做到这一点? 如果你只是需要一些测试事件触发和捕捉,这是我怎么做。为了确保某个事件被触发($ emit-ed或$ broadcast-ed),间谍是要走的路。你需要一个引用的范围,将调用$ emit或$ br
我需要测试事件被正确地发射或广播,并手动触发事件。

什么是最好的方法做到这一点?

如果你只是需要一些测试事件触发和捕捉,这是我怎么做。为了确保某个事件被触发($ emit-ed或$ broadcast-ed),间谍是要走的路。你需要一个引用的范围,将调用$ emit或$ broadcast,然后只是做这样的事情:
spyOn(scope,"$emit")
//run code to test
expect(scope.$emit).toHaveBeenCalledWith("MY_EVENT_ID",other,possible,args);

如果你不需要或不想担心通过$ emit传递的参数,你可以在$ rootScope上放置一个$ on,并设置一个标志来知道事件被发出。这样的东西:

var eventEmitted = false;
$rootScope.$on("MY_EVENT_ID",function() {
   eventEmitted = true;
});
//run code to test
expect(eventEmitted).toBe(true);

对于测试当事件被捕获($ on)时运行的功能,它会更容易一些。只需从inject函数获取$ rootScope,然后发送所需的事件。

$rootScope.$broadcast("EVENT_TO_TEST",args);
//expects for event here

现在,我想象这个事件处理将发生在指令或控制器(或两者)。有关设置指令测试,请参见https://github.com/vojtajina/ng-directive-testing.有关设置控制器测试,请参阅https://github.com/angular/angular-phonecat/blob/master/test/unit/controllersSpec.js#L27

希望这可以帮助。

(编辑:李大同)

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

    推荐文章
      热点阅读