PHP で
かんたんテストススメ
      @iakio
第 11 回  LOCAL PHP 部勉強会
       2010/08/28
テストって?
SimpleTest
PHPUnit
SimpleTest
<?php
require_once('simpletest/autorun.php');
require_once('../fizzbuzz.php');

class TestFizzbuzz extends UnitTestCase {
    function testFizzBuzzOne() {
        $this->assertEqual(fizzbuzz(1), 1);
    }
}
?>
いうほど
Simple
でもない
Test::Simple
Test::More
ok(fizzbuzz(1) ==1);
 is(fizzbuzz(1), 1);
但し Perl のモジュール
いくつか実装があるようです
●   http://testanything.org/wiki/index.php/TAP_Prod
    ucers
●   Apache::Test
●   test-more-php
search.cpan.org
   Test.php
#!/usr/bin/php
<?php
require_once('.../tlib/Test.php');
require_once('../fizzbuzz.php');
plan('no_plan');

is (fizzbuzz(1), 1);
is (fizzbuzz(2), 2);
is (fizzbuzz(3), "fizz");
Tips
YAML を使う
<?php
$data = array(
   'id' => 1,
   'name' => 'hoge',
   'description' => '....'
);

$data = Y(<<<EOD
id   : 1
name : hoge
description : ...
EOD
);
object へのキャスト
<?php
is($data['foo'], 'foo');
is($data['bar'], 'bar');

$o = (object) $data;
is($o->foo, 'foo');
is($o->bar, 'bar');
脱線
( 本編 ?)
Test.php-0.13 $ cat t/0-compile.t
#!/usr/bin/env php
<?php
require 'Test.php';

plan(1);

ok(0 == 0);
?>
Test.php-0.13 $ make test
prove -r t
t/0-compile.t ............ ok
t/1-plan-1.t ............. ok
誰かが PHP を起動している
#/usr/bin/php
<?php phpinfo();?>
$ perl phpinfo.php
phpinfo()
PHP Version => 5.1.6


System => Linux localhost.localdomain
...
Shebang( シバン、シェバン )
chmod +x されたスクリプトを
実行したときに shell が使うもの
でも Perl と Ruby は
Shebang をみます
php でも shebang を書いておけば
     prove が使えます

Local php-100828 2