我收到茉莉花测试错误,预期间谍openQuickSubtypes已被调用。

我已经实现了上下文菜单。

组件.html

<div class="each-shift" *ngFor="let shift of shiftsWithEmptyBoxes">
    <div class="shift-cover" [ngClass]="shiftDetails(shift)">
      <div class="requested-vertical-bar"
           [ngClass]="getShiftVerticalBarColor(shift)"></div>
      <div class="shift-left-box" #subtype (contextmenu)="openQuickSubtypes(subtype, subtypeMenu, shift); $event.preventDefault();">
        {{ showShiftOverTime(shift) }}
        {{ getShiftSubTypeLetter(shift, false) }}
        {{ showSubTypeShiftNotation(shift) }}
      </div>

组件.ts

 openQuickSubtypes(origin:any,menu:any,index:number)
  {
    this.contextService.openContextMenu(origin,menu,this.viewContainerRef,{data:index})
    .subscribe(openMenu=>{
    })
  }

我的测试用例:测试用例应该打开右键单击

it('should right click', fakeAsync(() => {
    component.shiftsWithEmptyBoxes = [{
      "shiftId": 130374,
      "shiftType": "empty"
    }
    ];
    fixture.detectChanges();
    const menuClick = fixture.debugElement.query(By.css('.shift-left-box'));
    const spyonOpenQuickSubtypes = spyOn(component, 'openQuickSubtypes').and.callThrough();
    const event = new MouseEvent('click',
    {
    view: window,
    bubbles: true,
    cancelable: true,
    relatedTarget: document
    });  
    menuClick.nativeElement.dispatchEvent(event);
    fixture.detectChanges();
    fixture.whenStable().then(() => {
      expect(spyonOpenQuickSubtypes).toHaveBeenCalled();
    });
  }));

每当我运行测试用例时,它都会给我以下错误:

错误:预期的间谍 openQuickSubtypes 已被调用。

#1楼 票数:1 已采纳

试试这个方法,不要使用spyOn的返回值


it('should right click', fakeAsync(() => {
    component.shiftsWithEmptyBoxes = [{
      "shiftId": 130374,
      "shiftType": "empty"
    }
    ];
    fixture.detectChanges();
    const menuClick = fixture.debugElement.query(By.css('.shift-left-box'));
    spyOn(component, 'openQuickSubtypes').and.callThrough();
    menuClick.triggerEventHandler("contextmenu", new  MouseEvent("contextmenu"));
    fixture.detectChanges();
    expect(component.openQuickSubtypes).toHaveBeenCalled(); 
  }));

  ask by Setu Sharma translate from so

未解决问题?本站智能推荐:

1回复

用茉莉花间谍测试cdk覆盖

与测试垫对话框类似,什么是测试cdk覆盖的好方法? MatDialog服务单元测试Angular 6错误 服务呼叫示例:
1回复

Angular 7测试用例抛出广播器错误

在运行测试用例时,它将引发此错误。 几乎添加了所有必需的组件和服务以及其他依赖项,尽管在Angular中运行测试用例时会抛出错误 这是规范文件代码
1回复

失败:fakeGenericModalComponent.modalData 在默认茉莉花测试用例中未定义

我正在为我的团队正在开发的应用程序获取默认测试用例。 在这一点上,我正在处理的特定组件是让组件成功创建。 component.ts文件中的代码是这样的 我在测试用例中遇到问题的组件的类是 spec.ts 文件中当前包含此代码(我尝试了多种方法来模拟 modaldata) 这是我在此
1回复

测试失败“预期的间谍 doDeleteRule 已被调用。”,茉莉花,业力

使用茉莉花进行的直接测试失败了。 “预期间谍 doDeleteRule 已被调用。” 我注意到如果我删除 subscribe 子句中的 if 语句,它就会通过。 但是 if 语句是必需的,因为我只希望在返回的可观察值等于 true 时执行该方法。 我需要做/检查吗? 规格: 成分:
1回复

茉莉花测试用例类中的私有函数? [重复]

这个问题已经在这里有了答案 : 如何使用Jasmine单元测试来测试私有方法 (1个答案) .ts: 我正在尝试为此私有方法(任何最佳方法)添加一个测试用例?
1回复

茉莉花测试用例无法读取未定义的属性“关闭”

我试图为close方法编写单元测试用例,但是当我进行ng test ,出现以下错误 下面是我的测试代码 我的关闭方法 请告诉我我在做什么错。
2回复

调用 backendserver-angular 的服务类的单元测试

我有一个方法在服务类,它有一个对后端服务器的 GET 调用,后端服务器返回一个带有字段的人数组的响应 - 就业 ID、姓名和 busnTitle。 你能帮助覆盖以下几行吗?
1回复

如何为角度js函数编写茉莉花测试用例

我正在使用jasmine 2.0来测试javascript函数。