【问题标题】:Jasmine Test Error : Expected Spy XYZ to have been calledJasmine 测试错误:预期 Spy XYZ 已被调用
【发布时间】:2021-04-02 17:26:27
【问题描述】:

我在 component.ts 文件中有一个方法,它正在调用服务方法。 代码结构如下-

getDetails(){
  if(!alreadyCached){
     callLogFunction();
  }
  this.service.getData()
  .then(res => {
    //rest of the logic here
  })
  .catch(err=>{ //catch logic here })
}

我的测试块是这样的-

it('should call service.getData', ()=>{
  spyOn(service,'getData').and.returnValue(Promise.resolve([]);
  component.getDetails();
  fixture.whenStable().then(()=>{
    expect(service.getData).toHaveBeenCalled();
  }
}

为什么我会收到预计会调用 spy getData 的错误 如果你能帮助我进行测试并捕获块(如何为它们编写测试),那就太好了

谢谢! :)

【问题讨论】:

    标签: javascript angular unit-testing jasmine karma-jasmine


    【解决方案1】:

    如果您尝试测试是否调用了 service.getData,则根据您的测试名称,您应该这样编写测试:

    it('should call service.getData', ()=>{
    
      const getDataSpy = spyOn(service,'getData');
    
      component.getDetails();
    
      expect(getDataSpy).toHaveBeenCalled();
      
    }
    

    这样你只测试了你想测试的,服务方法被调用,没有其他干扰

    【讨论】:

    • 还是同样的问题。预计间谍 'getData' 已被调用
    • 如果您仍然收到该错误,请尝试调试您的代码。它的字面意思是测试期望调用该函数。尝试登录不同的代码段并查看失败的地方
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-07
    • 1970-01-01
    • 2014-09-13
    • 2021-11-05
    • 2021-03-06
    • 1970-01-01
    相关资源
    最近更新 更多