对Angular使用了HttpClient的服务进行单元测试
待测试的服务:
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的服务进行单元测试相关推荐
- apache httpclient 工具类_使用HttpClient进行服务的远程调用
目标:使用apache公司的产品http httpcomponents 完成服务调用. HTTPClient调用服务 4:导入httpclient的依赖配置 org.apache.httpcompon ...
- Junit-对涉及数据库操作的服务进行单元测试
之前一直不知道怎么通过单元测试,对涉及数据库操作的服务进行验证,现在了解了,做个记录. ******************************************************** ...
- 【请求后台接口】30秒完成Angular10精简版HttpClient请求服务搭建
ng g s services/http app.module.ts ... @NgModule({declarations: [...],imports: [...HttpClientModule, ...
- Angular中怎样创建service服务来实现组件之间调用公共方法
场景 Angular介绍.安装Angular Cli.创建Angular项目入门教程: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/detail ...
- Angular应用里使用HTTP服务的一个具体例子
导入HttpClientModule: import { HttpClientModule } from '@angular/common/http'; 然后添加到NgModule的imports区域 ...
- Angular.js前端简单微服务架构设计
1.使用angular脚手架进行多项目工作区搭建* 搭建后的项目到project层,后续项目需自主配置 ng new my-workspace --create-application false 2 ...
- IP:PORT failed to respond HttpClient 请求服务端报错
此问题排查方向为连接本身的问题 比如:客户端使用连接池技术访问服务端,连接池默认情况下使用了长连接来避免每次建立连接消耗,从而提升性能,但是服务端设置了keepalive timeout ,服务端在规 ...
- 使用jasmine.createSpyObj具有依赖关系的Angular服务进行单元测试
具有依赖关系的Service源代码: import { Injectable } from '@angular/core';@Injectable() export class MasterServi ...
- 关于Angular里给Component protected方法写单元测试的技巧
本文写作背景是,我需要开发一个单元测试,能够测试到protected convertListItem方法. 我直接敲service., Visual Studio Code的代码自动完成列表里,没有出 ...
最新文章
- 总结:SQL的优缺点及与NoSQL对比
- SQL 2005 Express 的“企业管理器” 下载
- Android中Application类用法
- BigTable的开源实现:HBase数据库
- linux磁盘的命令是,linux磁盘相关的命令
- 修复 www.shouyela.com 造成的 IE 问题
- 视频码率,帧率和分辨率的联系与差别
- 关于left join 一些测试
- nodeJS 视频教程
- 四阶龙格库塔法的基本思想_经典四阶龙格库塔法解1阶微分方程组.doc
- 易语言执行mysql命令_易语言执行sql进度条 易语言mysql
- linux 汉化记述
- Flask-SQLAlchemy relationship中的 lazy屬性
- python怎么将字母排序_请教如何用python按字母顺序排序英文名字但是不可以用sort函数...
- 三星电视机dns服务器维护,4招解救三星智能电视看视频卡顿问题
- 推广链接生成html操作流程,拼多多生成商城推广链接接口
- 微信与php什么区别,微信小店和微信小程序的区别是什么?
- 2005 最新GIS地理信息系统软件
- java 类型参数推断
- 清洁机器人--音频方案之基于国民MCU IO控制的唯创WT588 语音播放方案