update()
предназначен для отдельных объектов, а для переходных объектов. если вызывать на постоянных объектах, он будет вызывать NonUniqueObjectException
, и это будет рассмотрено merge()
.
Проблема, видимо, заключалась в том, что я неправильно использовал when
. Я читал, что «Mockito позволяет конфигурировать возвращаемые значения его макетов через свободный API. Неуказанные вызовы методов возвращают« пустые »значения:
null для объектов
0 для чисел
[ 1113] false для логического значения
пустых коллекций для коллекций
Моки могут возвращать разные значения в зависимости от аргументов, переданных в метод. используется для указания возвращаемого значения для вызова метода с предопределенными параметрами. "
when
ожидает метод, а также точные аргументы. Поэтому, если я хочу позвонить findUser(userkey)
, где значение userkey
, скажем, 1
в реальном вызове, мне нужно написать when(findUser(1))
или userKey=1; findUser(userKey))
.
В моей неправильной реализации я установил userkey
как
UserKeys (1, "test@test.com", loginInfo, "", "")
но вызов findUser
был со значением
UserKeys (116, "d@d.com", loginInfo, "fn", "ln")
Я изменил значение userkey в тест и это сработало
val userKeys = UserKeys(utilities.bucketIDFromEmail(email)/*returns 116*/,"d@d.com",loginInfo,"fn","ln")
when(mockUserRepository.findOne(userKeys)).thenReturn(Future{Some(user)})
when(mockUserRepository.save(user)).thenReturn(Future(Some(user)))