什麼是,non-isolated 就是「非隔離測試」,這個方式不建議在做單元測試這樣做,除了與 TDD 精神相反外,還會造成測試程式碼維護的複雜度,所以在測試時要避免將「單元測試」寫成「整合測試」。
那麼 isolated 測試,也就是隔離測試,在撰寫測試的過程中要將測試案例切割很清楚,這個測例檢查 html 的 class、attribute,下個測例驗證service回傳值的正向、在另一個測例驗證反向,諸如此類。一個案例只測一件事。
除此之外,isolated 測試還有另一種解釋,不依賴Angular測試工具,也能寫的測試,像是Pipe用來轉換幣別、日期、時間,或是客製化的,功能面向很單純,就是「轉換字串樣式」。那麼Pipe是如何做到 pure isolated? 來實作看看
import { Pipe } from "@angular/core";
@Pipe({
name: 'reverse'
})
export class ReversePipe {
transform(value: string) {
return value.split("").reverse().join("");
}
}
line 4
new ReversePipe物件,line 5
調用pipe的transform方法,預期經過轉換後會==
ollehimport { ReversePipe } from "./reverse.pipe";
describe('Pipe: ReversePipe', () => {
it('should reverse the inputs', () => {
let reversePipe = new ReversePipe();
expect(reversePipe.transform('hello')).toEqual('olleh');
});
});
「測試框架」是幫助開發者快速開發的工具,有時候在框架久了反而會被框架限制,這次學習上認識到,可以把TestBed... Angular測試模組抽掉,也能寫測試案例。
有時候習慣某種方式使用後,會忘記原始工具的使用原理,就像都市人以為只有「瓦斯爐」能開火,沒有別種方式能把食物煮熟,殊不知最原始的方式,就是「鑽木取火」也能煮飯。
所以同理,在學習的時候,別被框架限制住,掌握基礎知識便能把「點、線、面」兜起來。
本篇是 Anular Unit Test 基礎用法的尾聲,明天開始要學習從專案寫測試。
參考文章來源: