やったぁあああああああああああああああああああ(/・ω・)/
ついに、ついに成功することができました!
- これまでの無念
vendors ディレクトリへ移動
cd ~/cakephp/vendors/
app/Vendor でもいいんだけど、本番環境にはアップしないし、それに .gitignore では、最初からコミットされないように記述されているので、ここがいいんだろうな。と思います。
composer.jsonでphpunitをインストールするようにファイル作成
$ vi composer.json ======= { "name" : "phpunit", "description" : "PHPUnit", "require": { "phpunit/phpunit": "3.7.*" }, "config" : { "vendor-dir": "PHPUnit" } } =======
インストール
作成したらcomposerを使ってインストール
$ composer install Loading composer repositories with package information Installing dependencies (including require-dev) - Installing symfony/yaml (v2.6.6) Downloading: 100% - Installing phpunit/php-text-template (1.2.0) Downloading: 100% - Installing phpunit/phpunit-mock-objects (1.2.3) Downloading: 100% - Installing phpunit/php-timer (1.0.5) Downloading: 100% - Installing phpunit/php-token-stream (1.2.2) Downloading: 100% - Installing phpunit/php-file-iterator (1.4.0) Downloading: 100% - Installing phpunit/php-code-coverage (1.2.18) Downloading: 100% - Installing phpunit/phpunit (3.7.38) Downloading: 100%
おおおおおおおおおおおおおおおおおおおおおお(/・ω・)/
やったぜ!!
動作確認してみる
http://localhost/test.php へアクセスしてみましょう。
※CakePHPの動作が確認できるパスを指定してください。
そしたら、、、、あれ?
Debug setting does not allow access to this url.
よくわからないエラーメッセージが。
ぐぐる。
どうやら、debug mode を、2へ上げなければならない。修正する。
- app/Config/core.php
// 34行目ぐらい Configure::write('debug', 2);
もう一度(アンビリバボー風に)
ぐぬぬぬ・・・・
To install with the PEAR installer run the following commands:
いや、だから、前回PEARでインストールしようとしたらできなかったじゃなーいヾ(*`Д´*)ノ
いろいろ確認してみる
$ ~/cakephp/app/Console/cake test core Basics --------------------------------------------------------------- PHPUnit 3.7.38 by Sebastian Bergmann. ........................S..S. Time: 2.56 seconds, Memory: 7.75Mb OK, but incomplete or skipped tests! Tests: 29, Assertions: 188, Skipped: 2.
あれ? 実行できた。
ということは一応PHPUnitには問題ないのかな?
面倒くさいので、直接指定してみた
- app/Config/bootstrap.php
// 72行目ぐらい CakePlugin::loadAll(); require_once ROOT . DS . 'vendors' . DS . 'PHPUnit' . DS . 'autoload.php';
もう一度(アンビリバボー風に)
おっ、エラーがなくなった!
テストしてみる
時間ないのでサクッと(今出勤前に書いています)
CakePHPのドキュメント通りに作ってみる
- app/View/Helper/ProgressHelper.php
class ProgressHelper extends AppHelper { public function bar($value) { $width = round($value / 100, 2) * 100; return sprintf( '<div class="progress-container"> <div class="progress-bar" style="width: %s%%"></div> </div>', $width); } }
次
- app/Test/Case/View/Helper/ProgressHelperTest.php
App::uses('Controller', 'Controller'); App::uses('View', 'View'); App::uses('ProgressHelper', 'View/Helper'); class ProgressHelperTest extends CakeTestCase { public function setUp() { parent::setUp(); $Controller = new Controller(); $View = new View($Controller); $this->Progress = new ProgressHelper($View); } public function testBar() { $result = $this->Progress->bar(90); $this->assertContains('width: 90%', $result); $this->assertContains('progress-bar', $result); $result = $this->Progress->bar(33.3333333); $this->assertContains('width: 33%', $result); } }
では実行してみます!(ざわ・・・ざわ・・・)
ブラウザで確認できます。
さっき何もなかったところに突然リンクが!!!
クリック!
・・・・・ッ!
動かない! (´;ω;)
何故だ!
簡単な話だ!!!
- app/Test/Case/View/Helper/ProgressHelperTest.php
<?php // ↑上が足りなかった orz App::uses('Controller', 'Controller'); App::uses('View', 'View'); App::uses('ProgressHelper', 'View/Helper'); class ProgressHelperTest extends CakeTestCase { public function setUp() { parent::setUp(); $Controller = new Controller(); $View = new View($Controller); $this->Progress = new ProgressHelper($View); } public function testBar() { $result = $this->Progress->bar(90); $this->assertContains('width: 90%', $result); $this->assertContains('progress-bar', $result); $result = $this->Progress->bar(33.3333333); $this->assertContains('width: 33%', $result); } }
もう一度!!!
おおお!
なんかいっぱいでてきた!!!
めちゃめちゃテストケースが失敗している!!!
何故だ!!!!!!?
理由はすぐにわかった!!!!!!!
- app/View/Helper/ProgressHelper.php
<?php // ↑上が足りなかった orz class ProgressHelper extends AppHelper { public function bar($value) { $width = round($value / 100, 2) * 100; return sprintf( '<div class="progress-container"> <div class="progress-bar" style="width: %s%%"></div> </div>', $width); } }
お・ち・つ・け (ギリギリなのはわかるけど)
もう一度実行!
おおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおお!!!!
うまくいきました!
感想
もう出勤するので省きます。
しかし、以前の記事からはや100日後(ぐらいかな?)
ついに俺もテストエンジニア(初心者)になる時がきました。
ガリガリ書いていくお(^ω^ = ^ω^)おっおっおっ
おわり