人生を楽しく生きる為に、テストを楽にしようということで作りました。
cakePHPのunitTest書く時に便利だと思います。
※必ずRunkitを入れておく必要があります。
Runkitのインストール方法は以下の通り
git clone https://github.com/zenovich/runkit.git
phpize
cd runkit
./configure
make
make installvi /etc/php.ini
[runkit]
extension=runkit.so
runkit.internal_override=1
<?php class Hoge { public static function huga() { return true; } }
このHogeクラスのhugaメソッドの戻り値をfalseに変更させていみます。
<?php require_once('test_runkit.php'); // Hogeクラスのhugaメソッドを書き換える TestRunkit::swapMethod('Hoge','huga' ); if ( Hoge::huga() ) { echo "なまくらと申したか\n"; } else { echo "拙者はさような事は...\n"; } // 元に戻す TestRunkit::clearSwapMethod(); if ( Hoge::huga() ) { echo "なまくらと申したか\n"; } else { echo "拙者はさような事は...\n"; }
実行結果は以下のようになります。
拙者はさような事は…
なまくらと申したか
function runTest() { echo "オラオラオラオラオラ\n"; }
echoする際に「無駄無駄無駄無駄無駄無駄無駄無駄」に変更する。
そしてオラオラに戻す。
TestRunkit::swapFunction('runTest','','echo "無駄無駄無駄無駄無駄無駄無駄無駄\n";'); runTest(); $reuslt = TestRunkit::clearSwapFunction(); runTest();
なんかあんまり役に立たないかもしれないと思う方も多いかと思いますが、Testコードを書いててモックを使う程じゃないけどー的なところで意外と役に立ちます。