模拟方法在scala中使用mockito返回java.util.List

时间:2012-11-22 12:33:23

标签: scala mockito

我想返回java.util.List

  val cacheManager = mock(classOf[CacheManager])
  val cache = mock(classOf[Cache])

  when(cacheManager.getCache(anyString)).thenReturn(cache)
  when(cache.getKeys.asInstanceOf[List[String]]).thenReturn(List("some_key"))

它编译,但抛出:

  java.lang.NullPointerException
  at net.sf.ehcache.Cache.checkStatus(Cache.java:2722)
  at net.sf.ehcache.Cache.getKeys(Cache.java:1912)
  at (last line of code)

我该如何解决?我尝试了几种方法,但没有成功。

方法签名:

     public final java.util.List getKeys() throws java.lang.IllegalStateException, net.sf.ehcache.CacheException { /* compiled code */ }

1 个答案:

答案 0 :(得分:1)

PowerMock,Mockito和其他的扩展,但可以模拟最终方法。 http://code.google.com/p/powermock/wiki/MockFinal

同样在引用java.util.List时,您可能希望使用全名而不仅仅是List,通常是scala.collection.immutable.List。