在Java中,thenReturn是Mockito框架中的一个方法,用于模拟方法调用并返回指定的结果。然而,有时候我们可能需要对同一个方法进行多次模拟,并返回不同的结果。这时,我们可以使用thenReturn的重载方法来解决这个问题。
重载方法的签名如下: thenReturn(T value, T... values)
其中,value表示第一次调用方法时返回的结果,values表示后续调用方法时返回的结果列表。
下面是解决这个问题的步骤:
举例来说,假设我们有一个名为userService的类,其中的getUser方法返回用户对象。我们希望第一次调用getUser方法返回用户A,第二次调用返回用户B。可以按照以下方式解决这个问题:
// 创建userService的模拟对象
UserService userService = Mockito.mock(UserService.class);
// 使用thenReturn的重载方法进行多次模拟
Mockito.when(userService.getUser())
.thenReturn(userA, userB);
// 在测试代码中按照预期调用getUser方法
User result1 = userService.getUser(); // 第一次调用,返回userA
User result2 = userService.getUser(); // 第二次调用,返回userB
// 验证结果是否符合预期
assertEquals(userA, result1);
assertEquals(userB, result2);
在这个例子中,我们使用thenReturn的重载方法对getUser方法进行了两次模拟,并分别返回了userA和userB。在测试代码中,我们按照预期的调用顺序和参数,分别调用了两次getUser方法,并验证了返回结果是否符合预期。
推荐的腾讯云相关产品和产品介绍链接地址:
云+社区技术沙龙[第16期]
企业创新在线学堂
云+社区技术沙龙[第14期]
云+社区技术沙龙[第8期]
Elastic 中国开发者大会
云+社区技术沙龙[第12期]
领取专属 10元无门槛券
手把手带您无忧上云