对Angular使用了HttpClient的服务进行单元测试
生活随笔
收集整理的这篇文章主要介绍了
对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的服务进行单元测试的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 关于甜品的朋友圈文案 有关于甜品的句子
- 下一篇: 使用setup函数替代beforeEac