这就是我嘲笑我的服务电话并返回假结果的方式:
when(myService.doSomething("",fakeRequestAsModel)) thenReturn fakeResult
val result = call(controller.myActionMethod(), request)
问题出现在控制器方法myActionMethod
中,当我调用doSomething
并传递参数时,我会调用一些只会在生产中返回内容的属性......
def myActionMethod() ... = {
myService.doSomething(request.getSomeValue,requestAsModel)
...
}
所以,getSomeValue
是一种我只能在生产中调用的方法,它带有第三方库,我无法覆盖它。
我怎么还能模仿这个电话,所以request.getSomeValue
不会给我一个例外?
和request.getSomeValue
是动态的,我不幸地把它放在配置中......
答案 0 :(得分:2)
// we rename this because Scala defines `eq` on `AnyRef`
import org.mockito.Matchers.{eq => eqMockito, _}
...
when(myService.doSomething(anyString(), eqMockito(fakeRequestAsModel)))
thenReturn fakeResult
我们希望Mockito在发送任何字符串并确切fakeRequestAsModel
时返回此答案,这就是您想要的。
注意:
any
匹配器与正常值混合,你不能说:
when(myService.doSomething(anyString(), fakeRequestAsModel))
。eqMockito()
方法包装正常值。any[classOf[T]]
用于类型参数化参数。希望它有所帮助!