データプロバイダーをよく知ろう!

320 Views

July 25, 25

スライド概要

関西PHP勉強会 x PHP勉強会@東京 で話した資料です

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

データプロバイダーをよく知ろう! 関西PHP勉強会 × PHP勉強会@東京

2.

● 荒巻 拓哉 自己紹介 ● X: @takaram71 ● 株式会社ラクス

3.

PHPUnit Calculator::add(int, int) のテストを書く

4.

PHPUnit 1+1=2 だけでいいの? Calculator::add(int, int)● のテストを書く ○ 4+6 は? ○ ○ 1+(-1) は? -3+1 は?

5.

PHPUnit ● 引数が違うだけのテストメソッドが増殖 ● モックの準備などで行数が増えるとカオスに……

6.

データプロバイダー

7.

データプロバイダー パラメタライズドテスト と呼んだりします

8.

データプロバイダー PHPUnit9まで

9.

データプロバイダー テストケース名 テストメソッドの引数

10.

データプロバイダー

11.

データプロバイダー

12.

データプロバイダー用のアトリビュート データプロバイダー利用に使えるアトリビュートは4種類 https://docs.phpunit.de/en/11.5/attributes.html#data-provider ● #[DataProvider] ● #[DataProviderExternal] ● #[TestWith] ● #[TestWithJson]

13.

#[DataProvider] / #[DataProviderExternal] ● 引数の配列の配列(またはイテレータ)を返すメソッドを指定 ● 他クラスのメソッドを使うときは #[DataProviderExternal]

14.

#[DataProvider] / #[DataProviderExternal] ● メリット ○ メソッドなので柔軟 ○ 複数メソッドで使い回せる ● デメリット ○ テストメソッドとデータプロバイダーメソッドの対応が見えづ らい このデータプロバイダー どこのテストで 使われてるの?

15.

#[TestWith] / #[TestWithJson] ● テストメソッドの引数配列を直接指定 ● #[TestWithJson] は配列の代わりにJSON文字列

16.

#[TestWith] / #[TestWithJson]

17.

#[TestWith] / #[TestWithJson] ● メリット ○ テストメソッドと値がそばにあってわかりやすい ● デメリット ○ 複雑なことはできない

18.

(余談) TestWith の歴史 ● PHPUnit 9 まで ○ JSON形式 ■ 文字列はシングルクォーテーション不可

19.

(余談) TestWith の歴史 ● PHPUnit 10 ○ Attribute化!

20.

(余談) TestWith の歴史 ● PHPUnit 11~ ○ テストケース名を書けるように🎉

21.

まとめ ● パラメタライズドテスト ○ 使い所によっては便利 ● #[DataProvider] だけでなく #[TestWith] も ○ PHPUnit 11以降は特に使いやすい