待测试的服务:

import { Injectable } from '@angular/core';
import {HttpClient} from '@angular/common/http';@Injectable()
export class BookManageService {private API_PATH = 'https://www.googleapis.com/books/v1/volumes';constructor(private http: HttpClient) { }searchBooks(queryTitle: string) {return this.http.get(`${this.API_PATH}?q=${queryTitle}`);}
}

单元测试代码:

import { TestBed } from '@angular/core/testing';
import { BookManageService } from './book-manage.service';
import { Book } from '../model/books';
import { of } from 'rxjs';describe('Book Manage service', () => {let httpClientSpy: { get: jasmine.Spy };let bookService: BookManageService;beforeEach(() => {httpClientSpy = jasmine.createSpyObj('HttpClient', ['get']);bookService = new BookManageService(httpClientSpy as any);});it('should return expected books (HttpClient called once)', () => {const BOOK: Book = {id: 'Jerry-Book',volumeInfo: {title: 'Diablo',subtitle: 'Diablo II',authors: ['Jerry', 'Tom'],publisher: 'SAP',publishDate: '2020-2-2',description: 'This is great book',averageRating: 1,ratingsCount: 100}};const expectedBooks: Book[] = [ BOOK];httpClientSpy.get.and.returnValue(of(expectedBooks));bookService.searchBooks('Jerry').subscribe(books => expect(books).toEqual(expectedBooks, 'expected books'),fail);expect(httpClientSpy.get.calls.count()).toBe(1, 'one call');});
});

测试结果:

对Angular使用了HttpClient的服务进行单元测试相关推荐

  1. apache httpclient 工具类_使用HttpClient进行服务的远程调用

    目标:使用apache公司的产品http httpcomponents 完成服务调用. HTTPClient调用服务 4:导入httpclient的依赖配置 org.apache.httpcompon ...

  2. Junit-对涉及数据库操作的服务进行单元测试

    之前一直不知道怎么通过单元测试,对涉及数据库操作的服务进行验证,现在了解了,做个记录. ******************************************************** ...

  3. 【请求后台接口】30秒完成Angular10精简版HttpClient请求服务搭建

    ng g s services/http app.module.ts ... @NgModule({declarations: [...],imports: [...HttpClientModule, ...

  4. Angular中怎样创建service服务来实现组件之间调用公共方法

    场景 Angular介绍.安装Angular Cli.创建Angular项目入门教程: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/detail ...

  5. Angular应用里使用HTTP服务的一个具体例子

    导入HttpClientModule: import { HttpClientModule } from '@angular/common/http'; 然后添加到NgModule的imports区域 ...

  6. Angular.js前端简单微服务架构设计

    1.使用angular脚手架进行多项目工作区搭建* 搭建后的项目到project层,后续项目需自主配置 ng new my-workspace --create-application false 2 ...

  7. IP:PORT failed to respond HttpClient 请求服务端报错

    此问题排查方向为连接本身的问题 比如:客户端使用连接池技术访问服务端,连接池默认情况下使用了长连接来避免每次建立连接消耗,从而提升性能,但是服务端设置了keepalive timeout ,服务端在规 ...

  8. 使用jasmine.createSpyObj具有依赖关系的Angular服务进行单元测试

    具有依赖关系的Service源代码: import { Injectable } from '@angular/core';@Injectable() export class MasterServi ...

  9. 关于Angular里给Component protected方法写单元测试的技巧

    本文写作背景是,我需要开发一个单元测试,能够测试到protected convertListItem方法. 我直接敲service., Visual Studio Code的代码自动完成列表里,没有出 ...

最新文章

  1. 总结:SQL的优缺点及与NoSQL对比
  2. SQL 2005 Express 的“企业管理器” 下载
  3. Android中Application类用法
  4. BigTable的开源实现:HBase数据库
  5. linux磁盘的命令是,linux磁盘相关的命令
  6. 修复 www.shouyela.com 造成的 IE 问题
  7. 视频码率,帧率和分辨率的联系与差别
  8. 关于left join 一些测试
  9. nodeJS 视频教程
  10. 四阶龙格库塔法的基本思想_经典四阶龙格库塔法解1阶微分方程组.doc
  11. 易语言执行mysql命令_易语言执行sql进度条 易语言mysql
  12. linux 汉化记述
  13. Flask-SQLAlchemy relationship中的 lazy屬性
  14. python怎么将字母排序_请教如何用python按字母顺序排序英文名字但是不可以用sort函数...
  15. 三星电视机dns服务器维护,4招解救三星智能电视看视频卡顿问题
  16. 推广链接生成html操作流程,拼多多生成商城推广链接接口
  17. 微信与php什么区别,微信小店和微信小程序的区别是什么?
  18. 2005 最新GIS地理信息系统软件
  19. java 类型参数推断
  20. 清洁机器人--音频方案之基于国民MCU IO控制的唯创WT588 语音播放方案

热门文章

  1. 2016/09/16面试资料汇总
  2. Linux下怎么做秒执行任务
  3. ie8一下解决圆角,阴影不兼容问题
  4. 线上redis服务内存异常分析。
  5. 下载,安装 Source Navigator(ubuntu 14.04)
  6. 【网络配置】双网卡访问
  7. android:SQlite
  8. li span 时间向右排版问题
  9. 发布一个WTL实现的QQ2009登录窗口源码
  10. Google准备开始新一年的大扩张