2014-01-13 3 views
1

У меня следующий код ниже, и вам нужно проверить, что электронное письмо отправляется, когда пользователь заблокирован.Проверка Scala Mailer.sendEmailClientSuspended

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 (клиент) вызывается с правильной арг например правильный клиентом передаются. Стоит ли разделять его на отдельную функцию и насколько сложно тестировать «объект» в Scala, поскольку Mailer является объектом.

ответ

0

Предполагая, что вы пишете свои тесты в Scala с помощью MockitoSugar and ScalaTest, вы хотите использовать ArgumentCaptor из библиотеки Mockito. Это позволяет вам фиксировать значение объекта client, переданного в качестве параметра в фонд sendEmailClientSuspended(client).

См. this stackoverflow post для проработанного примера, за которым вы можете следовать. Вам необходимо указать пакет вашего класса Client находится в, так что-то вроде этого ...

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

Если Mailer объект не степени Trait в настоящее время, добавьте так что вы можете дразнить Черту и вызов verify() на нем.

Если вы не являетесь владельцем кода Mailer, вы можете переместить вызов в свой собственный класс-помощник, который вы пишете, и затем вы можете издеваться над новым признаком. Что-то вроде этого ...

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

object MyMailer extends MailerTrait() { 
    def sendEmailClientSuspended(client: Client): Unit = { 
     Mailer.sendEmailClientSuspended(client) 
    } 
} 
Смежные вопросы