【发布时间】:2015-10-20 08:41:07
【问题描述】:
所以在 MVC 项目中,我有 Facades,它使用 Services 来获取信息。
所以我想通过测试确保调用正确的服务方法来获取信息,并且我想检查我的外观方法的返回类型是否符合我的预期。
当然,例如,当我期望一个用户列表时,我可以只模拟一个,然后使用 when().thenReturn() 返回列表并断言输出是相同的
问题是,我觉得嘲笑一切很烦人。下面是 Facade 中的方法的示例:
public List<UserData> getUsersByRegion(final RegionModel userRegion)
{
final List<UserModel> userModels = userService.getUsersByRegion(userRegion);
final List<UserData> userFacadeData = new ArrayList<UserData>();
for (final userModel model : userModels)
{
final UserData userData = new UserData(model.getEmail());
userFacadeData.add(userData);
}
return userFacadeData;
}
我是测试新手,到目前为止我所理解的是,您在不知道实现的情况下测试某些东西。因此,作为一名测试人员,我不知道这个人是如何做到的,我只知道他需要使用 Userservice 并且我想要一个带有 UserData 的列表。所以我不知道,他使用model.getEmail() 来调用构造函数UserData()。
还有我不需要测试的 UserService,因为我会为此编写一个额外的测试。
因此,如果我现在想真正测试该方法对所有数据的作用,我需要模拟 UserModels、UserData、RegionModels 来创建一个asssertEquals 并使用when().thenReturn()。
问题是,这是一个相当短的方法。由于 Facades 用于抽象获取和转换信息的复杂性,因此您在其中有很多工作要做。所以当我有更大的方法时,我会有很多东西可以模拟。
那么这真的有必要吗,有什么我没有考虑的吗,或者我该如何处理?如果我嘲笑,例如,对 UserService 使用 when().thenReturn() 不是明智的做法,而不是仅仅让 UserService 返回自身,因为它可能会发生,UserService 可能有错误?
P.S.:在 JUnit/Mockito 中测试方法的返回类型的方法是什么?
谢谢!
【问题讨论】:
标签: java testing junit mockito facade