Slide 1

Slide 1 text

bUnitを救いたい ~BlazorのテストライブラリbUnitの紹介~ 木村 龍太郎 2023/10/26 Fukuoka.NET #25

Slide 2

Slide 2 text

2 自己紹介 ⚫ 木村龍太郎 (きむら りゅうたろう) ⚫ オルターブース 23卒 新入社員 ⚫ jsakamotoさんと話すためにBlazor の 知識詰め込んだ ⚫ Blazor WASMの理解でお世話になりました ⚫ レンダリング方法がReactと違っておもろい @ryutaro_1019

Slide 3

Slide 3 text

bUnitってご存じですか

Slide 4

Slide 4 text

4 bUnitとは Razorコンポーネントの単体テストを実現するテストライブラリ ⚫ 公式の Microsoft テスト フレームワークではない。 ⚫ MSTest、NUnit、xUnit などの汎用テスト フレームワークで動作する。 Counter.razor (Razorコンポーネント)の中身 【テストの例】 IncrementCount関数が実行されたとき 期待したUIに変わるかのテスト

Slide 5

Slide 5 text

今日話すこと

Slide 6

Slide 6 text

6 bUnitを救いたい ⚫ bUnitは記事がさみしい… ⚫ 上から四つ目で関係ない記事出るくらい(2023/10/26時点) ⚫ アルバイト時代の戦友(bUnit)を紹介したい ⚫ 半年くらいbUnit書いていた 今回の話を 通して bUnitの触りだけでも知ってもらい 知名度を上げる

Slide 7

Slide 7 text

7 基本的な書き方 @inherits TestContext @code { [Fact] public void CounterShouldIncrementWhenClicked() { // ①Arrange: Counter.razor コンポーネントをレンダリング var cut = Render(@); // ②Act: テストしたいCSSセレクタ(クラス名もOK)を指定しクリック。 cut.Find("button").Click(); // ③Assert: アサートしたいCSSセレクタを指定しその内容を確認する。 cut.Find("p").MarkupMatches(@

Current count: 1

); } } ←テスト対象のコンポーネント(Counter.razor) bUnitのテストコード→

Slide 8

Slide 8 text

8 他にも書いたテストケース ⚫ ボタンを押したら画面遷移するテスト → “/” から “/user” へのルーティングのアサート ⚫ サインインしていたら〇〇させるテスト →セッションにサインイン状態をセットする → HTMLのアサート ⚫ 非同期処理のテスト →WaitForAssersion()で非同期処理の終了を待つ → HTMLのアサート くわしくは公式ドキュメントを!

Slide 9

Slide 9 text

9 漁った記事 ⚫ 基本はbUnitの公式ドキュメントを読む ⚫ 読み方 1. 左の目次からテストしたい処理を探す さっきの例だと[Verifying output]とか 2. コードと説明を読む ⚫ エラーの解決策はGithubのissue ⚫ bUnit作者のEgilさんが答えてくれてる (jsakamotoさんも待ってます) https://bunit.dev/docs/getting-started/index.html

Slide 10

Slide 10 text

10 まとめ ⚫ bUnitはRazorコンポーネントの単体テスト用ライブラリ ⚫ bUnitの学習は公式ドキュメントとの睨めっこ ⚫ Egilさんとjsakamotoさんを見習おう