【问题标题】:How write unit test cases for service file with rxjs next method如何使用 rxjs next 方法为服务文件编写单元测试用例
【发布时间】:2022-01-14 21:59:40
【问题描述】:

我是角度单元测试的新手,我曾尝试为服务文件编写测试用例。我需要为下面的代码编写测试用例

import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';

@Injectable({
  providedIn: 'root'
})

export class EmployeeDetailsService {
  private readonly employeeRoles = new BehaviorSubject<any>([]);
  private readonly isEmployeeData = new BehaviorSubject<boolean>(true);

  employeeRolesData = this.employeeRoles.asObservable();
  isEmployee = this.isEmployeeData.asObservable();

  addEmployeeRoles(data: string) {
    this.employeeRoles.next(data);
  }

  checkIsEmployee(data: boolean) {
    this.isEmployeeData.next(data);
  }
}

我试过的是

import { TestBed } from '@angular/core/testing';
import { EmployeeDetailsService } from './EmployeeDetails.service';

describe('EmployeeDetailsService', () => {
    let service: EmployeeDetailsService;

    beforeEach(() => {
        TestBed.configureTestingModule({});
        service = TestBed.inject(EmployeeDetailsService);
    });

    it('should be created', () => {
        expect(service).toBeTruthy();
    });

    it('addEmployeeRoles', () => {
        service.addEmployeeRoles.subscribe(data => {
            expect(data).toEqual(data);
        })
    });

    it('checkIsEmployee', () => {
        service.checkIsEmployee.subscribe(data=>{
            expect(data).toEqual(data)
        })
    });

})

单元测试用例通过,但代码覆盖率没有提高。所以请帮我解决这个问题。

【问题讨论】:

    标签: angular angular-unit-test


    【解决方案1】:

    当您在subscribe 中使用expect 时会出现问题。由于它是异步的,expect 可以在您的测试之后执行。

    解决此问题的方法之一是添加一个函数,该函数将在 subscribe 中调用,以通知 Karma 您的测试已完成如下:

    it('checkIsEmployee', (done) => {
        service.checkIsEmployee.subscribe(data=>{
            expect(data).toEqual(data);
            done();
        })
    });
    

    【讨论】:

      猜你喜欢
      • 2019-05-01
      • 1970-01-01
      • 2020-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多