使用setup函数替代beforeEach函数进行Angular单元测试

105 阅读1分钟

具有依赖关系的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 using setup Instead of beforeEach', () => {
    it('#getValue should return stubbed value from a spy', () => {
        const { masterService, stubValue, valueServiceSpy } = setup();
        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);
      });
});

测试结果:

在这里插入图片描述