Вложенные издевательства с котлин мокито и сопрограммы - PullRequest
0 голосов
/ 03 декабря 2018

Привет. Я пытаюсь смоделировать коллекцию KMongo, но я передаю ее в MongoDatabase, а хранилище получает свою коллекцию.Я считаю, что очиститель.

Я пытаюсь создать макет базы данных, который возвращает макет коллекции:

    @RunWith(MockitoJUnitRunner::class)
class UserRepositoryTest {
    @Mock
    lateinit var userCollectionMock: MongoCollection<User>
    @Mock
    lateinit var database: MongoDatabase

    @Test
    fun isInsertOneCalledTest() {
        runBlocking {
            whenever(userCollectionMock.insertOne(any<User>(), any<InsertOneOptions>())).thenAnswer { null }
            whenever(database.getCollection(any())).thenAnswer { userCollectionMock }

            val userRepository = UserMongoRepository(database)

            val testUser = User(UUID.randomUUID().toString(), "test@outlook.com")

            userRepository.createUser(testUser)

            verify(userCollectionMock.insertOne(any<User>(), any<InsertOneOptions>()))
        }
    }
}

Выдает эту ошибку:

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: недопустимое использование сопоставителей аргументов!Ожидается 3 совпадения, 2 записано: -> на com.bkaraargirov.users.UserRepositoryTest $ isInsertOneCalledTest $ 1.invokeSuspend (UserRepositoryTest.kt: 48) -> на com.bkaraargirov.users.UserRepositoryTest $ isInsertOneCalledToryTestTestTestTest $ 1.invo:)

Я могу прочитать ошибку - аргументы кажутся нормальными.Он взрывается с первого раза ().На этом макете я возвращаю ноль, так как тип возвращаемого значения: Void?

...