首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jasmine-jQuery -你能通过事件间谍“调用”吗?

Jasmine-jQuery -你能通过事件间谍“调用”吗?
EN

Stack Overflow用户
提问于 2021-03-31 07:26:42
回答 1查看 51关注 0票数 0

我需要复制间谍的功能,这是通过一个事件调用。也就是说,假设存在:spyOn(method).and.callThrough(),是否也存在类似于:spyOnEvent(event).and.triggerThrough()的东西

EN

回答 1

Stack Overflow用户

发布于 2021-04-06 14:33:09

该事件的作用类似于函数调用,因此您可以用相同的方式设置它。

例如,当你设置你的组件,并且有一个函数(onInit),你希望另一个函数(myFunction)作为它的一部分被调用。

代码语言:javascript
复制
// arrange
spyOn(component, 'myFunction');

// act
component.onInit();

// assert
expect(component.myFunction).toHaveBeenCalled();

因此,您可以以相同的方式设置事件,其中事件(myEvent)在被测试的函数(myFunction)内触发:

代码语言:javascript
复制
  // arrange
  spyOn(component.myEvent, 'emit');

  // act 
  component.myFunction(); 

  // assert
  expect(component.myEvent.emit).toHaveBeenCalled();

只有当您的服务有一个预期要执行的调用时,您才会正常设置数据,因为您的测试范围需要一些返回数据:

代码语言:javascript
复制
spyOn(myService, 'myServiceFunction').and.returnValue(of(true));

或者,您可以将其设置为:

代码语言:javascript
复制
mockedService.spyOf(x => x.myServiceFunction).and.returnValue(of(true));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66879703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档