Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Laravelのパッケージのテストに便利なパッケージ

3,977 views

Published on

Laravel Meetup Tokyo Vol.3(2014/4/5)のLT資料です。

Published in: Software
  • Be the first to comment

  • Be the first to like this

Laravelのパッケージのテストに便利なパッケージ

  1. 1. Laravelのパッケージのテストに便利なパッケージLaravelMeetup Tokyo Vol.3 永宮 悠大
  2. 2. 自己紹介永宮 悠大(Yuta Nagamiya) 仕事 SIerのソフトウェアエンジニア CodeIgniter暦1年半、Laravel暦半年 ソーシャル Twitter: GitHub: Qiita: @ngmy ngmy ngmy
  3. 3. モチベーションLaravelらしいテストコードを書きたい Laravelのコアクラスをテストで使いたい Travis CIで継続的インテグレーションしたい
  4. 4. Laravelらしくないテストclass SomePackageTest extends PHPUnit_Framework_TestCase {     public function testSomething()     {         $ngmy = new SomePackage;         $ngmy­>someMethod();         // Some test     } }
  5. 5. Laravelらしいテストclass SomePackageTest extends PHPUnit_Framework_TestCase {     public function testSomething()     {         SomePackage::someMethod();         // Some test     } }
  6. 6. コアクラスの利用class User extends Eloquent {} class SomePackageTest extends PHPUnit_Framework_TestCase {     public function testSomething()     {         // Make test data         $u = new User;         $u­>name  = 'ngmy';         $u­>email = 'ngmy@example.com';         $u­>save();         // Some test     } }
  7. 7. testbench Laravelのパッケージ開発用のユニットテストヘルパー パッケージのテストでコアクラスを利用できるようになる orchestral /testbench
  8. 8. インストールcomposer.json {     "require­dev": {         "orchestra/testbench": "2.1.*"     } }
  9. 9. 使い方(1/4) tests/TestCase.phpに基底クラスを定義する class TestCase extends OrchestraTestbenchTestCase {}
  10. 10. 使い方(2/4) composer.jsonのautoloadに基底クラスを追加する {     "autoload": {         "classmap": [             "tests/TestCase.php"         ]     } }
  11. 11. 使い方(3/4) 基底クラスでサービスプロバイダーを登録する protected function getPackageProviders() {     return array(         'NgmySomePackageSomePackageServiceProvider',     ); }
  12. 12. 使い方(4/4) 基底クラスでエイリアスを登録する protected function getPackageAliases() {     return array(         'SomePackage' => 'NgmySomePackageFacadesSomePackage'     ); }
  13. 13. Laravelらしいテストが書けるuse Package; class SomePackageTest extends TestCase {     protected function testSomething()     {         Package::someMethod();         // Some test     } }
  14. 14. コアクラスを利用できる(1/2) use IlluminateDatabaseEloquentModel as Eloquent; class User extends Eloquent {}
  15. 15. コアクラスを利用できる(2/2) class SomePackageTest extends TestCase {     public function setUp()     {         parent::setUp();         // Set up a database         $this­>app['config']­>set('database.default', 'sqlite');         $this­>app['config']­>set('database.connections.sqlite', array(             'driver'   => 'sqlite',             'database' => ':memory:',             'prefix'   => '',         ));         // Create a table         Schema::create('users', function ($table)         {             $table­>increments('id');             $table­>string('name');             $table­>timestamps();         });     } }
  16. 16. これでパッケージ開発が捗る
  17. 17. Travis CIでも動くよ!
  18. 18. 楽しいパッケージ開発を!
  19. 19. ご清聴ありがとうございました

×