如何从父母那里嘲笑方法'类?

时间:2016-12-22 04:00:50

标签: java unit-testing

请看下面的课我要测试,逻辑很简单, 首先,checkEmail(Entity),如果存在create(Entity)新用户,则update(Entity)。但是所有这三个方法都继承自父类。但是,这三种方法可以从父类的父类继承或覆盖,ParentController也有父类。示例:来自create(Entity)父类的ParentControllerCheckEmail来自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};
} 

1 个答案:

答案 0 :(得分: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("test@email.com");
        UserControllerMocked target = new UserControllerMocked();
        target.createUser(userEntity);

        // assertions
    }
}

我不知道模拟框架在这里是否有帮助。