我正在尝试为一个更新API编写一个Junit测试用例。该API正在使用JPA的saveAll
方法来执行更新。该API工作正常,但是当尝试模拟saveAll
方法时,它会给我以下错误:
io.mockk.MockKException:未找到以下项的答案:用户资料档案库(#1).saveAll(用户详细信息..)
@Test
fun testUpdateUserDetailsSuccess() {
val userRepository = mockk<UserRepository>()
every { userRepository.saveAll(anyList()) } returns getUserDetailsTestData();
val userDetailsDatabaseAdapter = UserDetailsDatabaseAdapter(userRepository)
val userResponse = userDetailsDatabaseAdapter.updateUserDetails(getUserDetails())
}
用户存储库
@Repository
interface UserRepository : JpaRepository<UserDetails, UUID> {
fun findById(userId: UUID): List<UserDetails>
}
用户详细信息数据库适配器
override suspend fun updateUserDetails(userDetail: UserDetails): Either<CustomError, Int> =
either {
//fetching some details from DB and then forming a list of userDetails
val response = updateUserDetails(
userRepository,
userDetails
) andThen ::mapToCount
response.bind()
}
更新用户详细信息
fun updateUserDetails(
userRepo: UserRepository,
userDetails: List<UserDetails>
): Either<CustomError, List<UserDetails>> =
bulkWriteToDatabase {
userRepo.saveAll(userDetails)
}
2条答案
按热度按时间zc0qhyus1#
我看到你用的是Mockito标签,但你用的是Mockk。
那是不是
anyList()
的声音?如果是这样的话,您就混合了Mockito和Mockk库。
相反,您是否可以尝试将Mockito的
anyList()
替换为Mockk的any()
以进行部分匹配:请参阅:Mockk -部分参数比对
44u64gxh2#
我建议如下(注意
any()
和getUserDetailsTestData()
的赋值):