2017-10-17 135 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}")