2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

selectの変更がサクッと調べられなかったので備忘録がわりに残します。

備忘録として、select要素の変更をテストする方法を記録しておきます。以下では、簡単な実装とそのテスト方法を紹介します。

実装

まず、以下のようなHTMLのselect要素を用意します。

<select>
  <option>value1</option>
  <option>value2</option>
  <option>value3</option>
</select>

テスト

次に、このselect要素が正しく動作することをテストします。以下のテストコードは、value3が選択できるかを確認します。

test('selectでvalue3が選択できること', async() => {
  // select要素を取得
  const selectValue = screen.getByRole("combobox").closest("select")!
  
  // value3に選択を変更
  fireEvent.change(selectValue, { target: { value: "value3" }})
  
  // value3に変更されたことを確かめる
  expect(selectValue.value).toBe("value3")
})

補足

.closest("select")!を使用している理由は、getByRoleで取得した要素がHTMLElement型と解釈され、valueプロパティが見つからないエラーを避けるためです。
これにより、select要素を明示的に取得し、HTMLSelectElement型として扱うことができます。

もう少し良い書き方がありそうですが、今回はこれまでとします。

最後に

getByRoleは色々指定できるので、公式を見ながら何が取得できるか試してみると良いです。
https://testing-library.com/docs/queries/byrole
短い記事ですが、誰かの時間を救えればいいなと思っています。
最後まで見て頂きありがとうございました。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?