作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在下面有以下代码,需要测试在用户被暂停时发送电子邮件。
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/
我在下面有以下代码,需要测试在用户被暂停时发送电子邮件。 def suspendClient(client: Client, event: Event): EventResult = {
我是一名优秀的程序员,十分优秀!