魔法使いの卵

WEBエンジニアの卵の成長記録

phpspec導入してみた

phpspecとは

  • BDDFrameworkの一つ
  • 自然言語でテストかける
  • 親戚はBehat

PHPUnitの違い

blog.comnect.jp.net

  • すごいわかりやすい

Composerを使って導入する

phpspecをComposerに追加する

  • jsonファイルを作成する
  • jsonファイルにphpspecを入れる設定を書く
{
       "require-dev": {
           "phpspec/phpspec": "~2.0"
       },
       "config": {
           "bin-dir": "bin"
       },
       "autoload": {"psr-4": {"": "src"}}
 }
 
  • phpspecを入れる
    • php composer.phar install

導入されているか確認する

  • バージョンを確認する
    • phpspec -v

実際に試してみる

  • これから作るクラスのテストファイルを作成する(例:test)
    • bin/phpspec desc Test
    • 以下でコマンド実行後テストファイルを作成しましたってことがわかる
Specification for test created in /vagrant/develop/spec/TestSpec.php.
  • テストを実行する
    • phpspec run
    • クラスがない場合は作るか作らないか聞かれる(y:生成 n:生成しない)
Class test created in /vagrant/develop/src/Test.php.

オートローダを使いたい時

  • namespaceを使ってファイルを生成したい場合
    • composer.jsonの設定を書き換える
"autoload": {"psr-4": {"App\\": "src"}}
  • オートローダを更新する
php composer.phar dumpautoload
  • 設定を作成する(設定ファイルをルート配下に設置)
    • 用途に合わせて変えたい(以下のようにしたい時)
      • dev/spec/test(テストファル)
      • dev/test(クラスファイル)
vim phpspec.yml
 {
      "require-dev": {
          "phpspec/phpspec": "~2.0"
      },
      "config": {
          "bin-dir": "bin"
      },
      "autoload": {"psr-4": {"App\\": "src"}}
  }
bin/phpspec desc App\\クラス名
  • テスト実行
phpspec run

ドキュメントが読みたい時

  • http://www.phpspec.net/en/latest/cookbook/matchers.html

  • 公式以外にもドキュメントはみれる

    • vendor/phpspec/phpspec/features/matchers/配下のファイル
    • テストしたいソースとphpspecでのテストが対になってはいっている
    • phpspecのテストはBehatで書かれているため読めるなら使い方がわかりやすい(読める人)

おもったこと

  • 情報少なすぎるw
  • なぜかComposer周りでハマってた。
    • 設定はあってるはずなのにいつまでエラーが出続ける(導入ミスったのかな?)
    • 対策としては作成したソースだけ別ディレクトリに逃してComposer入れなおした。
  • オートローダーすごいいい
  • テストマンになるぞー!!
  • TDDに興味ある
  • 手動テストだるくてやりたくない

参考元

phpspec

phpspec-docs/installing-phpspec.rst at master · phpspec/phpspec-docs · GitHub

ytake/spec-unit-testing · GitHub

www.slideshare.net

ytake.blog | PHPSpecのLTしてきました(+PHPUnit、Behat、Codeception記述方法の違いも)