gpt4 book ai didi

Scala 测试 Mailer.sendEmailClientSuspended

转载 作者:行者123 更新时间:2023-11-28 20:55:48 24 4
gpt4 key购买 nike

我在下面有以下代码,需要测试在用户被暂停时发送电子邮件。

  def suspendClient(client: Client, event: Event): EventResult = {
Logger.debug(String.format(s"Found Client[${client.getName}]"));
subService.suspend(client)
Mailer.sendEmailClientSuspended(client)
WebHookEventDAO.completeEvent(event.getId)
EventResult.ok
}

我要测试的主要逻辑是使用正确的参数调用 Mailer.sendEmailClientSuspended(client),例如传递了正确的客户端。是否值得将它拆分成一个单独的函数,以及在 Scala 中测试“对象”有多困难,因为 Mailer 是一个对象。

最佳答案

假设您使用 MockitoSugar and ScalaTest 在 Scala 中编写测试你想使用 ArgumentCaptor来自 Mockito 图书馆。这允许您捕获作为参数传递给基金 sendEmailClientSuspended(client)client 对象的值。

参见 this stackoverflow post对于一个可行的例子,你可以遵循。您需要指定您的 Client 类所在的包,所以像这样...

val capturedClient = ArgumentCaptor.forClass(classOf[com.acme.app.Client])

如果您的 Mailer 对象当前不扩展 Trait,请添加一个以便您可以模拟该 Trait 并调用 verify()

如果您不拥有 Mailer 的代码,您可以将调用移出到您编写的它自己的帮助程序类中,然后您可以模拟新的 Trait。像这样的……

trait MailerTrait {
def sendEmailClientSuspended(client: Client): Unit
}

object MyMailer extends MailerTrait () {
def sendEmailClientSuspended(client: Client): Unit = {
Mailer.sendEmailClientSuspended(client)
}
}

关于Scala 测试 Mailer.sendEmailClientSuspended,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21093451/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com