0

アプリケーションにあるいくつかの単純なサービスのテストに問題があります。これは私のサービス方法です:

public function createNewCourse($details = array())
    {
        $course = new Course($details);
        $this->persistenceManager->save($course);
    }

基本的に、このサービスに配列を送信し、オブジェクトのプロパティを設定する $course オブジェクトを作成します。その後、基本的にデータベースにオブジェクトを挿入する save メソッドを持つ persistenceManager を呼び出します。とにかく、永続性を実際にテストせずにこのメソッドをテストする方法のヒントは、別のテストになるためです。

4

2 に答える 2

3

persistanceManager依存関係としてオブジェクトに注入された場合、テストでそれを表すためのモックオブジェクトを作成できます。

そうでない場合は、単体テストが非常に困難になるため、依存関係の注入を使用するようにコードをリファクタリングする必要があります。

心配しないでください。依存関係の注入は、非常に単純な概念の単なる空想のフレーズです。

コースオブジェクトの単体テストでも同様の問題が発生します。

于 2012-04-11T15:55:43.740 に答える
0

スタブの persistenceManager を使用して、 createNewCourseメソッドを含むクラスに提供します。スタブは次のようになります。

class StubPersistenceManager
{
    private $course;
    public function save($course)
    {
         $this->course = $course;
    }
    public function getCourse()
    {
         return $this->course;
    }
}

このスタブのインスタンスを $this->persistenceManager として、createNewCourseメソッドを含むクラスに挿入してください。

テストでは、createNewCourseメソッドを呼び出し、続いてスタブのgetCourse関数を使用して、持続性マネージャーに提供されたコース インスタンスを取得できます。

于 2012-04-11T16:01:23.287 に答える