【问题标题】:Expected spy isAuth to have been called once. It was called 0 times预计间谍 isAuth 已被调用一次。它被调用了0次
【发布时间】:2020-05-07 12:57:42
【问题描述】:

//这是我的组件,这里调用的isAuth服务方法是Task方法

export class DefaultComponent implements OnInit {

  constructor(public defaultService: DefaultService) { }

  ngOnInit(): void { }


  isTask(id) {
    if (id) {
      this.defaultService.isAuth(id);
    }
  }

}

//这是我的服务代码

从“@angular/core”导入 { Injectable };

@Injectable({providedIn: 'root'})
export class DefaultService {
    constructor() { }

    isAuth(id: string) {
        return true;
    }
}

//这是我的单元测试,我想确保服务方法是否被调用

  it('should call isAuth api when isTask method is called', () => {
    component.isTask(123);
    const defaultService = TestBed.inject(DefaultService);
    spyOn(defaultService, 'isAuth');
    expect(defaultService.isAuth).toHaveBeenCalledTimes(1);
  });

//也可以试试

  it('should call isAuth api when isTask method is called', () => {
    const defaultService = TestBed.inject(DefaultService);
    spyOn(component, 'isTask').and.callThrough();
    spyOn(defaultService, 'isAuth');
    expect(defaultService.isAuth).toHaveBeenCalledTimes(1);
  });

【问题讨论】:

    标签: angular typescript angular-test


    【解决方案1】:

    代码运行良好。 我已经用

    导入了文件
    Import { DefaultService } from './defaultService';
    

    但实际文件名是'defaultservice.ts',所以应该是

    Import { DefaultService } from './defaultservice';
    

    Vscode 没有显示任何警告,并且 Angular 也没有给出任何错误。 可能是它没有以区分大小写的方式检查路径 url。

    【讨论】:

      猜你喜欢
      • 2020-09-15
      • 2022-08-17
      • 2018-11-14
      • 2021-11-05
      • 2017-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      相关资源
      最近更新 更多