現在、PHPでCSVの文字列を生成するメソッドのテストを書いてます。
が、これが非常に面倒で、今はわざわざデータプロバイダーを使って、テストしてます。
実際には下記のような感じです。
対象のメソッド
lang
1class Test() 2{ 3 public function generateCsv($userData) 4 { 5 $csv = ''; 6 $csv .= "名前,性別\n"; 7 8 foreach ($userData as $user) { 9 $csv .= sprintf("%s,%s\n", $user['name'], $user['age']); 10 } 11 12 return $csv; 13 } 14}
テスト
lang
1/** 2 * @test 3 * @dataProvider providerTest 4 */ 5public function CSVのテスト($userData, $expectCsv) 6{ 7 $test = new Test(); 8 9 $this->assertEquals($expectCsv, $test->generateCsv()); 10} 11 12public function providerTest() 13{ 14 return array( 15 array( 16 array( 17 'name' => '山田', 18 'age' => '21', 19 ), 20 array( 21 'name' => '大谷', 22 'age' => '28', 23 ), 24 '名前,性別\n山田,21\n大谷,28\n' 25 ) 26 ); 27} 28
もっと効率よく、生成されたCSVの文字列をテストする方法はありませんでしょうか。
あなたの回答
tips
プレビュー