LaravelのテストでDataProviderを使っていますでしょうか。今回は、DataProviderとは。効果について述べていきます。
0-1. DataProviderとは
Laravel Unitテストにおけるテスト用のデータを生成する仕組みです。Unitテストには、様々なデータ生成の仕組みが存在します。そのうちの1つです。
0-2. DataProviderのメリット
では、様々なデータ生成の仕組みが存在するなかで、DataProviderのメリットはなんでしょうか。それは同じテストにおいて、データのみが異なる場合に非常に簡単に実行してくれます。
例えば、動物かどうかを確認するテスト
を実行する際に。
確認するデータ(猿・像・ひまわり・ライオン
) に対して毎回テストを書いていたら面倒ですよね?? これをDataProviderを使えば簡単に全データをテストしてくれます。
1. DataProviderの書き方
1-1. DataProviderのメソッドを書く
> tests/AnimalTest.php
public function test_check_animal(){ //実行されるテスト } //これがDataProviderです。 public function animalTestData(){ return [ '猿' => ['肺呼吸', 'move', '光合成ナシ'], '像' => ['肺呼吸', 'move', '光合成ナシ'], 'ひまわり' => ['気孔と樹皮', 'stay', '光合成アリ'], 'ライオン' => ['肺呼吸', 'move', '光合成ナシ'], ]; }
注意点
- アクセス修飾子は public
- returnの中は連想配列で
1-2. DataProviderをテストメソッドで呼び出す
public function test_check_animal()
でDataProviderを使ってみます。
> tests/AnimalTest.php
/** * @dataProvider animalTestData */ public function test_check_animal(string $breathing, string $move, bool $photosynthesis){ //実行されるテスト } //これがDataProviderです。 public function animalTestData(){ return [ '猿' => ['肺呼吸', 'move', '光合成ナシ'], '像' => ['肺呼吸', 'move', '光合成ナシ'], 'ひまわり' => ['気孔と樹皮', 'stay', '光合成アリ'], 'ライオン' => ['肺呼吸', 'move', '光合成ナシ'], ]; }
注意点
- DataProviderを利用するテストメソッドの上で、利用するDataProviderを宣言します。
@dataProvider animalTestData
で宣言している部分です。
- テストメソッドでDataProviderのデータを引数で受け取ります。
string $breathing, string $move, bool $photosynthesis
で引き受けている部分です。
以上です。
猿・像・ひまわり・ライオン
の4種類のテストが1つのテストメソッドで実行出来ます。