2017-10-17 99 views
0

我有一个包含一些选项的案例类。比方说在scala中隐式选项mockito

case class Clazz(field: Option[String] = None) 

我想模拟这个类在scalatest spec传递给另一个函数。像...

val clazz = mock[Clazz] 

它使字段为null

后来这个clazz被序列化为JSON,并带有circe.io库,当然它会激发一个错误:scala.MatchError: null。因为它期望选项为SomeNone

所以我的问题是...我如何强制mockito使用选项None而不是空值。似乎需要某种隐含的东西。

或者也许完全不同的方法?

谢谢!

+0

你有没有试过把这些字段默认为'None'? 'case class Clazz(field:Option [String] = None)' – Tanjin

+0

是的。他们都默认为无。对不起,不提。 –

回答

0

你必须定义会有怎样的答案。至少我不知道mockito中的这种内置功能。这可以通过这种方式完成,当你的测试类扩展时org.scalatest.mockito.MockitoSugar

// Configurated mock 
val clazzMock = mock[Clazz] 
when(clazzMock.field).thenReturn(None) 
println(s"Configurated mock. Field: ${clazzMock.field}") 

// Non-configurated mock 
println(s"Non-configuarted mock. Field: ${mock[Clazz].field}")