如何在Mockito和Scala中使用隐式匹配器来存根方法调用

sim*_*mou 12 scala implicit matcher mockito specs2

我的应用程序代码使用AService

trait AService {
    def registerNewUser (username: String)(implicit tenant: Tenant): Future[Response]
}
Run Code Online (Sandbox Code Playgroud)

注册新用户.Class Tenant是一个简单的案例类:

case class Tenant(val vstNumber:String, val divisionNumber:String) 
Run Code Online (Sandbox Code Playgroud)

Trait AServiceMock通过使用模拟版本的AService来模拟注册逻辑

trait AServiceMock {
  def registrationService = {
    val service = mock[AService]
    service.registerNewUser(anyString) returns Future(fixedResponse)
    service
  }
}
Run Code Online (Sandbox Code Playgroud)

低,每当在AService上调用registerNewUser时,响应将是"fixedResponse"(在别处定义).

我的问题是,如何将隐式租户参数定义为像anyString一样的mockito匹配器?

顺便说一句.我正在使用Mockito和Specs2(和Play2)

sim*_*mou 16

有时你必须首先发布SO才能得出完全明显的答案(duhh):

service.registerNewUser(anyString)(any[Tenant]) returns Future(fixedResponse)
Run Code Online (Sandbox Code Playgroud)