0

以前の Web サイト開発に続いて、Web サイト開発に表示されるエンティティに対応するいくつかのコントローラー クラスを作成しました。当社の Web サイトは非常にシンプルです。顧客が旅行のためにバスを予約するためのショッピング Web サイトです。

ここで、実行する必要がある困難なタスクが割り当てられました。つまり、単一のコントローラー クラスに対して、それが適切に機能しているかどうかをテストするテスト ケースを作成する必要があります。

たとえば、次のような「JobsController」というコントローラー クラスがあります。

models = array( 'jobs' => new Jobs() ); } 関数 __destruct() { 親::__destruct(); } 関数 addJob( $name , $desc ) { if( $name == '' ) { false を返します。}; $params = array( 'name' => $name , 'description' => $desc ); return $this->models['jobs']->add( $params ); } function modifyJob( $jid , $name , $desc ) { if( $jid == '' || $name == '' ) { false を返します。}; $params = array( 'name' => $name , 'description' => $desc ); $this-> を返す models['jobs']->modify( $jid , $params ); } 関数 removeJob( $jid ) { if( $jid == '' ) { false を返します。}; return $this->models['jobs']->remove( $jid ); } function getJob( $jid ) { return $this->models['jobs']->getInfo( $jid ); } function getAllJobs() { return $this->models['jobs']->getAll(); } } ?> } function getJob( $jid ) { return $this->models['jobs']->getInfo( $jid ); } function getAllJobs() { return $this->models['jobs']->getAll(); } } ?> } function getJob( $jid ) { return $this->models['jobs']->getInfo( $jid ); } function getAllJobs() { return $this->models['jobs']->getAll(); } } ?>

他のすべてのコントローラークラスは、名前が変更されているだけで、ほぼ同じです。

このコントローラ クラスが適切に動作しているかどうかをテストするための簡単な php ファイルを作成する方法を教えてください。

多くの感謝!

4

1 に答える 1

4

テストケースを書くときは、基本的に前後のシナリオをテストしています。テストを実行する前に、(毎回) クリーンな環境を初期化して、何を期待するかを確実に把握する必要があります。次に、メソッドを実行し、その後の環境がどのようなものかをテストして、実行したアクションが望ましい効果をもたらしたかどうかを確認します。

たとえば、ジョブを使用して環境を作成するための modifyJob メソッドをテストするには、テスト値を指定して modifyJob メソッドを呼び出し、次に同じジョブで getJob を呼び出して、modifyJob に渡した値と一致する値が戻り値にあることを確認します。

function testModifyJob() {
  // create clean, known environment
  $controller = new JobsController();
  $job_id = $controller->addJob('name', 'description');

  // run the action
  $controller->modifyJob($job_id, 'new name', 'new description');

  //test the results
  $job = $controller->getJob($job_id);
  $result = $job['name'] == 'new name' && $job['description'] == 'new description';

  return $result;
}

コントローラをテストするには、オブジェクトがシステム内で信頼できることを確認するために、クラスが提供する各メソッドに対して上記のようなテスト ケースを作成する必要があります。

テスト ケースを作成するときは、おそらくテスト用にコントローラーに新しいメソッドを作成する必要があります。先に進んで作成してください (割り当てが許す場合)。テストケースでこれを持ち出すことは非常に一般的であり、通常、これらのニュアンスを明らかにすることで、クラスの利用可能な機能を完成させるのに役立ちます (テスト駆動開発が非常に強力な支持を得ている理由の 1 つです)。この例として、ジョブ コレクションに特定のジョブが含まれているかどうかをテストする hasJob($job_id) メソッドを作成し、deleteJob() などの関数をテストできるようにします。

于 2010-02-12T01:12:52.960 に答える