我们有一个从浏览器调用的REST端点(JAX-RS)。我们传递了OutputStream,以便浏览器可以显示调用结果。

这是方法。

@Path("/mypath/{userId}")
@POST
public Response createUser(@PathParam("userId") final int userId ) {
    StreamingOutput stream = (outputStream) -> {
        User user = userHelper.findUser(userId);
        userHelper.updateUser(user,outputStream);
    };

    return Response.ok(stream).build();
}

使用Junit和Mockito,我们如何验证userHelper.findUseruserHelper.updateUser是否已称为

基本上,我们只想验证交互作用。

最佳答案

要对此进行“单元”测试,您应该创建您的测试类,并创建此方法在测试类中所属的类的新实例。没有在lambda中定义userHelper,因此它是类成员?如果是这样,可以 mock 它:

  • 使用Mockito
  • 创建mock userhelper对象
  • inject模拟到您的测试类(class)。
  • 调用createUser方法。
  • 用于断言updateUser方法的模拟程序上的
  • verify被调用一次。
  • 您可以更进一步,并使用captors验证传递了哪些用户和outputStream对象。
  • 10-04 12:23