Angular jasmine toHaveBeenCalledWith中的queryParams不起作用。
创始人
2024-10-19 08:01:14
0

在Angular中使用Jasmine进行单元测试时,可以使用toHaveBeenCalledWith来验证函数是否以特定参数被调用。然而,有时可能会遇到toHaveBeenCalledWith中的queryParams不起作用的情况。这可能是因为传递的参数是一个对象,而在比较时,Jasmine使用的是toEqual,默认情况下比较对象的引用。

以下是解决这个问题的方法之一:

首先,确保你的测试代码中使用了HttpClientTestingModule,这样可以拦截HTTP请求并提供模拟的响应。在测试代码中导入并添加HttpClientTestingModule

import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
import { TestBed } from '@angular/core/testing';

// ...

beforeEach(() => {
  TestBed.configureTestingModule({
    imports: [HttpClientTestingModule],
    // ...
  });
});

然后,在测试用例中获取HttpTestingController实例,并使用它来验证HTTP请求:

import { HttpTestingController } from '@angular/common/http/testing';

// ...

it('should make a GET request with queryParams', () => {
  const httpMock = TestBed.get(HttpTestingController);

  // 执行包含HTTP请求的代码
  // ...

  // 验证HTTP请求
  const req = httpMock.expectOne((request) => {
    // 使用toEqual比较queryParams
    return request.params?.get('param1') === 'value1' && request.params?.get('param2') === 'value2';
  });
  expect(req.request.method).toBe('GET');

  // 模拟响应
  req.flush({ /* 响应数据 */ });
});

在上面的代码中,我们使用httpMock.expectOne来验证是否发起了一个HTTP请求,并使用request.params?.get('param1')来获取查询参数的值。然后,我们使用toEqual来比较查询参数的值是否与我们期望的值相匹配。

这样,就可以解决toHaveBeenCalledWith中的queryParams不起作用的问题。

相关内容

热门资讯

透视课程!newpoker怎么... 透视课程!newpoker怎么安装脚本(WPK有透视)确实是真的有辅助神器(哔哩哔哩)1、下载好ne...
透视课程!sohoo辅助(透视... 透视课程!sohoo辅助(透视)epoker免费透视脚本(辅助)一贯有软件(哔哩哔哩)1、epoke...
透视方案!xpoker辅助神器... 透视方案!xpoker辅助神器(透视)悦扑克脚本(辅助)总是真的有神器(哔哩哔哩)1、上手简单,内置...
透视要领!悦扑克脚本(透视)p... 透视要领!悦扑克脚本(透视)pokemmo免费脚本(辅助)原来真的有攻略(哔哩哔哩)所有人都在同一条...
透视总结!约局吧透视挂下载(W... 透视总结!约局吧透视挂下载(WePoKer亲友圈)真是是真的有辅助脚本(哔哩哔哩)1、用户打开应用后...
透视机巧!hhpoker有后台... 透视机巧!hhpoker有后台操作吗(WePoKer线上)总是真的是有辅助神器(哔哩哔哩)hhpok...
透视积累!红龙poker辅助(... 透视积累!红龙poker辅助(透视)哈糖大菠萝攻略(辅助)真是有神器(哔哩哔哩)1、哈糖大菠萝攻略辅...
透视烘培!拱趴大菠萝挂哪里(W... 透视烘培!拱趴大菠萝挂哪里(WePoKer插件)其实存在有辅助教程(哔哩哔哩)透视烘培!拱趴大菠萝挂...
透视窍要!智星菠萝辅助(透视)... 透视窍要!智星菠萝辅助(透视)约局吧怎么看有没有挂(辅助)真是有软件(哔哩哔哩)1、不需要AI权限,...
透视练习!hhpoker透视脚... 透视练习!hhpoker透视脚本下载(HHpoker操作)原来有辅助方法(哔哩哔哩)1、hhpoke...