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(明天)
實作
- 用
ng g s auth建立服務 - 為
login/logout/isAuthenticated寫測試 - 執行
ng test
作業
- 用
TestBed.inject取得服務 - 測試服務狀態方法
- 說出何時需要「模擬外部依賴」