请看下面的课我要测试,逻辑很简单,
首先,checkEmail(Entity)
,如果存在create(Entity)
新用户,则update(Entity)
。但是所有这三个方法都继承自父类。但是,这三种方法可以从父类的父类继承或覆盖,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 :(得分: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
}
}
我不知道模拟框架在这里是否有帮助。