2016-04-19 4 views
2
public function addPic($loggedInId,$PicId){ 

     $chatCoverPhotoObj = new COVER_PHOTO(); 
     $out = $chatCoverPhotoObj->add($loggedInId,$PicId); 

     if($out) 
      return true; 
     return false; 
    } 

上記のサンプルコードはPHPで書かれており、テーブルCOVER_PHOTOの簡単な追加レコード レコード: "loggedInId"で識別されるログインしたユーザーに対応する "picId"。ユニットテストはここに適用できますか?

この機能の単体テストで何を書くべきかを知りたい。 このような機能のために、ユニットテストを書くべきではありません。

お勧めしますか?

答えて

0

System-/Class Under Testが、インフラストラクチャ上の懸念事項(データベースの場合)を使用している場合は、integration testとなる傾向があります。

単体テストは、すべての可能性のある依存関係を嘲笑/突き詰めて起こっています。

私があなたのコードに見ている最初の問題は、あなたの関数の依存関係をnew()アップすることです。これにより、コードを簡単にテストすることはできません。

invert this dependencyをお勧めします。クラスのconstructorにインターフェイスがあり、そのインターフェイスの具体的な実装を受け取ることができます。これが完了したら、テストのデータベース部分をmockにすることができます。しかし、あなたがあなたの質問で共有しているコードを見ることによって、私は実際には確信していませんの動作あなたはここでテストするつもりです。

この場合は、永続化仕様やマッピング設定(もちろん、何らかの種類のOR/Mを使用している場合など)のように、テストする項目を必ず確認してください。永続性操作の戻り値(成功または失敗のフラグ)を確認しても、テストするビジネス価値はあまりありません。

関連する問題