3A 測試原則:Arrange, Act, Assert
3A 原則是測試中常用的一種模式,特別適用於單元測試。3A 代表三個關鍵步驟:
1. Arrange (準備)
在這個階段,你設置測試所需的所有條件和環境
創建測試物件、準備測試數據、設置模擬(mocks)或存根(stubs)
對於 Angular 元件測試,通常包括配置 TestBed、實例化元件、設置輸入屬性等
2. Act (執行)
在這個階段,你執行被測試的代碼或功能
調用被測試的方法、觸發事件、模擬用戶交互等
例如,點擊按鈕、改變輸入值、調用元件的公共方法等
3. Assert (斷言)
在這個階段,你驗證結果是否符合預期
檢查方法返回值、元件狀態變化、DOM 變更等
使用 Jasmine 的 expect 函數和匹配器來表達預期結果
實際例子
如果要測試你的 multiple-select 元件的 clear() 方法,使用 3A 原則的測試可能看起來像這樣:
it('should clear all selected values when clear method is called', () => {
// Arrange
component.value = ['option1', 'option2'];
// Act
component.clear();
// Assert
expect(component.value).toEqual([]);
expect(component.selectionChange.emit).toHaveBeenCalledWith([]);
});
3A 原則的好處
結構清晰:測試代碼有明確的結構,易於閱讀和理解
職責分離:每個部分都有明確的職責
易於維護:當測試失敗時,容易定位問題是出在哪個階段
易於擴展:可以輕鬆地添加更多的測試場景
在實際編寫測試時,你可以用註釋或空行來區分這三個階段,使測試代碼更加清晰。這種模式可以應用於所有類型的測試,不僅僅是 Angular 元件測試。
Last updated