ログ日記

作業ログと日記とメモ

simpletestのWebTestCaseメモ

WebTestCaseでは一つのページのチェックを一つのテストメソッドで行うと考えて作られているような設計だ。
一つのページで数個しかテストしない場合は構わないが、十個を超えると結果が見難くなる。


setupメソッドに接続処理を書くと、テストケースが増えたときに膨大な時間がかかる。
ではコンストラクタに接続処理を書いたらどうか。と思ったんだけどテストが開始されないとブラウザオブジェクトが生成されないらしい。




・・・で、ここまで書いてstaticを使えば解決することに気付いたので実装してみた。

function setUp(){
    static $browser;
    if ($browser === null){
        $browser = $this->getBrowser();
        $this->get('http://localhost/');
    }else{
        $this->setBrowser($browser);
    }
}

これは $this->get()メソッドが $browser->get() をそのまま(エラー処理関数でラップしながら)実行していることを利用している。
WebTestCaseが保持するブラウザインスタンスのメソッド実行以外に別の処理を行っている関数があると不具合が出るかもしれない。