欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

对Angular使用了HttpClient的服务进行单元测试

发布时间:2023/12/19 编程问答 34 豆豆
生活随笔 收集整理的这篇文章主要介绍了 对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的服务进行单元测试的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。