2011-08-12 3 views
0

私が次のようなことをしているとしたら、Letterがそれぞれ$dataで初期化されていることを確認するテストをしたいとします。この種のコードを単体テストできるのでしょうか?

public someMethod() 
{ 
    for ($i = 0; $i < 5; $i++) 
    { 
     $letter = new Letter($data); 
     $letter->send(); 
    } 
} 

私が指摘したかった主な問題は完全にsomeMethod()コールにカプセル化された5つの文字があります。彼らはメソッドのスコープを決して残さないので、戻り値をテストすることはできません。複数のメソッドがあるので、依存性注入はオプションではないようです。

答えて

4

依存性の注入が可能です:

public someMethod($letterFactory) 
{ 
    for ($i = 0; $i < 5; $i++) 
    { 
     $letter = $letterFactory->create($data); 
     $letter->send(); 
    } 
} 

(擬似コード、私はこれをすることになっているどのような言語かわからないので。)

あなたのユニットテストは、その後のモック実装を提供することができます$letterFactoryは、モックLetterオブジェクトを生成します。

関連する問題