Week 10 · Day 03 — 服務測試:基礎

學習目標

  • 建立 Service 測試
  • TestBed.inject 取得服務實例
  • 測試純服務方法

重點

測試純邏輯服務

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

  beforeEach(() => {
    TestBed.configureTestingModule({
      providers: [AuthService]
    });
    service = TestBed.inject(AuthService);
  });

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

  it('should login', () => {
    service.login('user', 'pass');
    expect(service.isAuthenticated()).toBeTrue();
  });

  it('should logout', () => {
    service.login('u', 'p');
    service.logout();
    expect(service.isAuthenticated()).toBeFalse();
  });
});

TestBed.inject - 從測試環境取得可注入的服務 - 需先在 providers@Injectable(providedIn:'root')

只測「純邏輯」 - 不需 HTTP/DB 的服務可直接測 - 有外部依賴(HTTP)的服務 → 用 mock(明天)

實作

  1. ng g s auth 建立服務
  2. login / logout / isAuthenticated 寫測試
  3. 執行 ng test

作業

  • TestBed.inject 取得服務
  • 測試服務狀態方法
  • 說出何時需要「模擬外部依賴」