2016-08-18 7 views
2

私はScockプロジェクトでMockitoをMockingフレームワークとして使用しています。モック私はそうのようなMockitoのマッチャーのに使用できると仮定するとmockitoの一般的なscalaメソッドをモックする

def parseXml[T: ClassTag](xmlUrl: URL, xsdUrl: Option[URL]): Option[T] 

when(xmlFileUnmarshallerMock.parseXml[org.mockito.Matchers.any[AddressBook]](org.mockito.Matchers.any[URL], org.mockito.Matchers.any[Option[URL]])) 
    .thenReturn(Some(defaultAddressBook)) 

しかし、それはコンパイルされません、私は使用して両方を試してみました私は、次の一般的なScalaの方法を模擬したかったです[任意]および[アドレス帳]が、次のエラーの両方の結果:

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: Invalid use of argument matchers! 3 matchers expected, 2 recorded. 

答えて

4

問題は、それが何です、あなたのparseXml関数は実際には3つの引数ではなく、2を取ることです構文は次のとおりの省略形です:

def parseXml[T](xmlUrl: URL, xsdUrl: Option[URL])(implicit classTag: ClassTag[T]): Option[T] 

あなたはそれを嘲笑しようとしているときに、Scalaは暗黙のうち三番目のパラメータを提供し、それは同じでマッチャと非マッチを混合できないため、それをmockito受け入れませんスタブ・コール。

一番下の行は、明示的に三番目のパラメータを提供し、それマッチャー作るために持っていることを、次のとおりです。

when(parseXml[AddressBook](any, any)(any)) 
    .thenReturn(Some(defaultAddressBook)) 
関連する問題