2017-04-10 88 views
0

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

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

我怎样才能“存根”的$event或者更准确地说MouseEvent(用于点击情况为例)和两种方法preventDefault()stopPropagation()已妥善称为测试?

以及如何触发此方法,包括适当的$event

我很难为此方法定义正确的测试用例。我试图spyOn$event,但它不能正常工作,因为找不到名称$event

+0

我目前无法验证,但您可以尝试:spyOn(MouseEvent.prototype,'preventDefault');结合手动创建的MouseEvent。我用这个自定义DI测试。 – Markai

+0

你有什么线索如何实现手动创建一个“正确”和相关的MouseEvent? – BlackHoleGalaxy

+1

如果我正确地理解了你,你需要类似这样的东西:http://stackoverflow.com/questions/11529158/how-to-assert-a-spy-is-invoked-with-event-on-click-using-茉莉 – Markai

回答

0

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