嗨,我正在尝试模拟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 $ isInsertOneCalledTest $ 1.invokeSuspend(UserRepositoryTest.kt:50)
我可以读取错误-参数似乎很好。它在第一个everything()时爆炸。 在该模拟中,我返回null,因为返回类型为:Void?