Использование типизированных классов значений в качестве идентификаторов является общим шаблоном в Scala. Однако кажется, что у Mockito есть проблема при методах stubbing, которые принимают классы значений в качестве аргументов. В приведенном ниже примере первый заглушка, с фактическим значением, работает просто отлично, а второй, который использует аргумент, вызывает вызов NullPointerException.Метод stubbing Mockito с аргументом класса значения не работает с NullPointerException
Единственная ссылка на это я нашел: this question, но решение, показанное там, не работает. Кто-нибудь знает решение этого или обход?
Версии: org.mockito: Mockito-все: 1.10.19 и org.specs2: specs2_2.11: 2.4.15
import org.specs2.mutable.Specification
import org.specs2.matcher.Matchers
import org.specs2.mock.Mockito
case class ID[T](val id:Long) extends AnyVal
trait DAO[T]{
def get(id:ID[T]):T
}
class MockitoIDStubTest extends Specification with Mockito with Matchers{
"Mockito" should{
"properly stub with argument value" in {
val m = mock[DAO[String]
m.get(ID[String](1)).returns("abc")
m.get(ID[String](1)) must_== "abc"
}
"properly stub with argument matcher" in {
val m = mock[DAO[String]
m.get(any[ID[String]]).returns("abc")
m.get(ID[String](1)) must_== "abc"
}
}
}
[Информация] Mockito должна
[info] + правильно заглушка с аргументом
[info]! правильно заглушки с аргументом согласовани
[ошибка] NullPointerException: (MockitoIDStubTest.scala: 20)
[ошибка] MockitoIDStubTest $$ anonfun $ 1 $$ anonfun $ применяются $ 5 $$ anonfun $ применять $ 6.apply (MockitoIDStubTest. Скала: 20)
может быть таким же вопросом, как http://stackoverflow.com/questions/28140793/scala-specs2-mocking-a-trait-method-returns-always-nullpointer-exception И также ищут решение Mockito – MeiSign