当前位置: 首页 > 面试题库 >

如何测试角度事件?

逑禄
2023-03-14
问题内容

我需要测试事件是否正确发出或广播,并手动触发事件。

最好的方法是什么?


问题答案:

如果您只需要对事件触发和捕获进行一些测试,这就是我的方法。为了确保触发某个事件($emit-ed或$broadcast-ed),必须采取间谍措施。您需要引用将要调用$emitor
的范围,$broadcast然后才可以执行以下操作:

spyOn(scope, "$emit")
//run code to test
expect(scope.$emit).toHaveBeenCalledWith("MY_EVENT_ID", other, possible, args);

如果您不需要或不想担心随传递的参数,则$emit可以在$on上放一个,$rootScope并设置一个标志以了解该事件已发出。像这样:

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

对于在捕获事件($on)时运行的测试功能,要容易一些。只需$rootScopeinject函数中获取a ,然后发送所需的事件即可。

$rootScope.$broadcast("EVENT_TO_TEST", other, possible, 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

希望这可以帮助。



 类似资料:
  • 问题内容: WebStorm中提供了一种运行和调试量角器Web测试的方法。我只想在这里分享这个答案 问题答案: 获取节点路径(在终端中输入) 在WebStorm中:单击“ 编辑配置 ”-“ 运行 ”按钮左侧的下拉菜单(绿色箭头,类似于“播放”按钮) 单击“添加按钮”(绿色 + )以添加新的Node配置。选择“ Node.js ” 填写参数: 节点解释器 :Node.js的完整路径(从步骤1开始)

  • 我是量角器的新手,在这里我尝试测试量角器的angularjs日期选择器。 我试图找到一种方法来做到这一点,而这篇文章是我唯一找到的东西,使用起来不太清楚 如果有人知道如何测试,请帮忙。 我需要的是选择今天的日期。 提前感谢:) < li >编辑- alecxe,这是我的日期选择器的屏幕截图。很抱歉,无法提供页面的链接。:(

  • 我有以下配置,但得到错误 詹金斯命令 下面是我的配置文件

  • 我有非常简单的AngularJs 1.4.8前端: 填写表单并按下OK按钮后,新人员将添加到表中。 表单在中,表在中,两者都是下的孩子。 添加用户时(单击确定)会发生以下情况: < li >向服务器发送< code>POST请求,以便添加新人员。 < li >使用< code>$emit从< code > addingPersonController 向< code>masterControlle

  • 我有一个父组件(CategoryComponent)、一个子组件(videoListComponent)和一个APIService。 我的大部分工作都很好,即每个组件都可以访问json api,并通过Observables获取其相关数据。 当前video list组件只获取所有视频,我想将其筛选为特定类别中的视频,我通过将categoryId传递给子对象实现了这一点。 CategoryCompon

  • 类定义为: 我继续创建对象: 使用以下工具进行检查: 打印: 但是在html模板中使用可以观察到: 引发: 如何解决这个问题?这里是Stackblitz项目的链接: https://stackblitz.com/edit/Angular-ivy-isebs7?file=src%2fapp%2fapp.component.ts