Mockito - 使用预期参数验证方法调用但忽略某些字段

Mockito - verify a method call with expected argument but ignore certain fields

我正在模拟一个名为 EmailSender 的 class,它有一个方法 sendEmail() 接受 class Email 的参数。我正在尝试验证我的 mockEmailSender 是否会使用预期的 Email class 调用一次 sendEmail 函数:verify(mockEmailSender, times(1)).sendEmail(expectedEmail)

class Email {
   String title;
   List<String> receipients;
   EmailBody body;
}

我正在初始化预期的电子邮件对象,如下所示Email expectedEmail = Email.builder().setRecipients(//example list).setTitle("Test title").setBody(//make this not matter)

如何在忽略 body 字段的情况下完成这项工作?所以我只想检查是否使用 expectedEmail 调用了 sendEmail() 方法,并且 expectedEmail 是否具有我设置的所有字段,同时忽略了某些字段,例如我不想明确设置。

ArgumentMatchers.refEq 匹配器可以帮助您轻松忽略不关心的字段:

verify(mockEmailSender, times(1)).sendEmail(refEq(expectedEmail, "body"));