Mockito可以处理在Scala中返回泛型的方法吗?

问题描述

| 我想模拟javax.servlet.http.HttpServletRequest,getParameterNames()的返回值。因此:
import org.specs.Specification
import org.specs.mock.Mockito
import scala.collection.JavaConversions._
import javax.servlet.http.HttpServletRequest

object SomethingSpec extends Specification with Mockito {
    \"Something\" should {
        \"do something\" in {
            val request = mock[HttpServletRequest]

            // This is fine
            val elements: java.util.Enumeration[String] = List(\"p1\",\"p2\").iterator

            // But this bombs
            request.getParameterNames() return elements
        }
    }
}
最后一行的编译会导致以下难以理解的错误
found   : java.util.Enumeration[String]
required: java.util.Enumeration[?0] where type ?0
难道我做错了什么?     

解决方法

您是否尝试过从HttpServletRequest转换返回值,例如
request.getParameterNames().asInstanceOf[java.util.Enumeration[String]] returns elements
看来,getParameterNames返回一个无类型的Enumeration。