使用jasmine.createSpyObj具有依赖关系的Angular服务进行单元测试
发布日期:2021-06-30 14:32:22 浏览次数:4 分类:技术文章

本文共 1452 字,大约阅读时间需要 4 分钟。

具有依赖关系的Service源代码:

import {
Injectable } from '@angular/core';@Injectable()export class MasterService {
constructor(private valueService: ValueService) {
} getValue() {
return this.valueService.getValue(); }}export class ValueService {
getValue() {
return 'Jerry'; }}

单元测试代码:

describe('MasterService with Angular jasmine.createSpyObj', () => {
let masterService: MasterService; let valueServiceSpy: jasmine.SpyObj
; beforeEach(() => {
const spy = jasmine.createSpyObj('ValueService', ['getValue']); TestBed.configureTestingModule({
// Provide both the service-to-test and its (spy) dependency providers: [ MasterService, {
provide: ValueService, useValue: spy }] }); // Inject both the service-to-test and its (spy) dependency masterService = TestBed.inject(MasterService); valueServiceSpy = TestBed.inject(ValueService) as jasmine.SpyObj
; }); it('#getValue should return stubbed value from a spy', () => {
const stubValue = 'stub value'; valueServiceSpy.getValue.and.returnValue(stubValue); expect(masterService.getValue()) .toBe(stubValue, 'service returned stub value'); expect(valueServiceSpy.getValue.calls.count()) .toBe(1, 'spy method was called once'); expect(valueServiceSpy.getValue.calls.mostRecent().returnValue) .toBe(stubValue); });});

测试结果:

在这里插入图片描述

转载地址:https://jerry.blog.csdn.net/article/details/108803705 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:使用TestBed测试具有依赖关系的Angular服务
下一篇:使用setup函数替代beforeEach函数进行Angular单元测试

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年05月02日 10时34分36秒