2016-12-22 4 views
0

私はテストするつもりです、次のクラスを参照してください、ロジックは単純です 最初に、checkEmail(Entity)、存在する場合はcreate(Entity)、新しいユーザーupdate(Entity)です。しかし、これら3つのメソッドはすべて、親クラスから継承します。ただし、これらの3つのメソッドは、親クラスも持っている親の親クラスを継承または上書きする可能性があります。ParentControllerにも親クラスがあります。例:create(Entity)ParentControllerの親クラス。 CheckEmailからParentControllerまで。親クラスからメソッドをモックする方法は?

どうすればこの状態でテストできますか?

public class UserController extends ParentController { 
@Override 
public void createUser(UserEntity userEntity) throws Exception { 

UserEntity existsUser = checkEmail(userEntity.getEmail()); 
    if (existsUser == null) { 
     create(userEntity); 
     } else { 
      updateExistsUser(existsUser, userEntity); 
     } 
} 
public class ParentController extends BaseController { 
    create (Entity entity){ ...some implementation ...}; 
    Entity update (Entity entity){ ... some imple... return entity}; 
} 
+0

あなたのTestcaseメソッドを表示できますか?ここで何をテストしたいかを簡単に理解するのに役立ちます。 –

答えて

0

あなたがテストし、その後、あなたはモックとしたい方法に独自の実装を提供するクラスから派生させてこれを行うことができます。

public class UserControllerMocked extends UserController { 
    @Override 
    create (Entity entity){ ... your mock code ....}; 
    @Override 
    Entity update (Entity entity){ ... your mock code ... return entity}; 
} 

ユニットテストの例:

public class UserControllerTest { 
    @Test 
    public void test1() { 
     UserEntity userEntity = new UserEntity("[email protected]"); 
     UserControllerMocked target = new UserControllerMocked(); 
     target.createUser(userEntity); 

     // assertions 
    } 
} 

モックフレームワークがここで助けになるかどうかわかりません。

+0

あなたが言ったように動作します。クラスから派生し、メソッドをテストします。 – chen

+0

答えが正しいとわかった場合、この回答の左上隅にあるグレーのチェックマークを押して、「回答を受け入れる」必要があります。ありがとうございます。 –

関連する問題