【问题标题】:Angular 2 testing $event: MouseEvent preventDefault and stopPropagation hasBeenCalledAngular 2 测试 $event: MouseEvent preventDefault 和 stopPropagation hasBeenCalled
【发布时间】:2017-04-10 11:19:32
【问题描述】:

在一个组件中,我有一个需要为其编写测试的函数。

toggleDropdown($event: MouseEvent): void {
    $event.preventDefault();
    $event.stopPropagation();
    this.status.isopen = !this.status.isopen;
  }

我怎样才能“存根”$event 或更准确地说是MouseEvent(例如点击案例)并测试preventDefault()stopPropagation() 这两种方法是否被正确调用?

以及如何触发这个方法,包括正确的$event

我很难为这个方法定义一个合适的测试用例。我试过spyOn$event,但它不能正常工作,因为找不到名字$event

【问题讨论】:

  • 我目前无法验证,但您可以尝试:spyOn(MouseEvent.prototype, 'preventDefault');结合手动创建的 MouseEvent。我将它与自定义 DI 测试一起使用。
  • 您对如何手动创建“正确”且相关的 MouseEvent 有任何提示吗?
  • 如果我理解正确,你需要类似这样的东西:stackoverflow.com/questions/11529158/…

标签: angular typescript jasmine karma-jasmine


【解决方案1】:

除非您检查这两个函数是否已被调用,否则没有必要。只需将 new Event('MouseEvent') 作为参数传递。

【讨论】:

    猜你喜欢
    • 2019-08-28
    • 2019-06-29
    • 2016-07-01
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多