iT邦幫忙

2024 iThome 鐵人賽

DAY 21
0
Modern Web

用 Angular Material 開發應用程式系列 第 21

Day 21 - 表單元件的 Harness 使用

  • 分享至 

  • xImage
  •  

FormField

透過 loader 取得 MatFormFieldHarness 實體,其中可以利用 with 指定 floatingLabelTexthasErrorsisValid 來依標籤文字、是否有錯誤訊息或驗證成功。

const formField = await loader.getHarness(MatFormFieldHarness.with({ floatingLabelText: '專案名稱' }))

如此一來,我們可以透過 getPrefixTextgetSuffixTextgetTextHintsgetTextErrors 來取得表單欄位各部分的文字內容。

Input

搭配著 FormFiled 要取得 Input 元件,除了可以利用 loader 取得 MatInputHarness 實體外,也可以利用 MatFormFieldHarnessgetControl 來取得。

const input = await loader.getHarness(MatInputdHarness);
await input.setValue('專案');
await input.blur();

如上面程式,透過 setValue 方法就可以在單元測試中在輸入框中輸入文字,且在執行時候會是以一個字一個字進行輸入,而不是整個字串放在輸入框內。

Select

在取得到 MatSelectHarness 後,利用 getOptions() 來取得此下拉選單的項目,就可以針對如地址選單的連動式下拉選單進行測試,

const select = await loader.getHarness(MatSelectHarness);
const options = await select.getOptions();
expect(options.length).toBe(expected.length);
expect(await Promise.all(options.map((o) => o.getText()))).toEqual(expected);

另外,如下面程式,在使用 checkOptions 方法以選項文字來選擇選單,需要先用 open() 開啓選單。

const select = await loader.getHarness(MatSelectHarness);
await select.open();
await select.clickOptions({ text });

接下來

今天描述了表單中常用的幾個元件所對應的 Harness 類別,接下來,來看看如何為我們寫得元件自訂一個 Harness 類別。


上一篇
Day 20 - 各元件的 Harness 使用
下一篇
Day 22 - 自訂 Harness 類別
系列文
用 Angular Material 開發應用程式30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言