0

我正在使用 mockito-kotlin。这是我的方法mergeList,它使用 DTO 作为输入/输出参数

data class UpdateResultDto(
    var sendToSd: Boolean = false,
    var status: ResultStatus = ResultStatus.SUCCESS,
    var errors: MutableList<UpdateError> = mutableListOf()
)

fun <T : Object> mergeList(
    objects: List<T>,
    result: UpdateResultDto,
    error: UpdateErrorInterface
) = crudList(objects, result, error) { entityManager.merge(it) }

fun <T> crudList(
    objects: List<T>?,
    result: UpdateResultDto,
    error: UpdateErrorInterface,
    action: (obj: T) -> Unit
) = persistence.runInTransaction {
    objects?.forEach {
        try {
            action(it)
        } catch (e: Exception) {
            result.saveError(error)
        }
    }
}

crudList 方法执行一个在 mergeList 中传递的操作,如果发生异常,它将错误状态保存到 result.status 字段和 errorsList 中。

我需要为代码编写一个单元测试,它调用 mergeList 方法并涵盖它返回错误状态时的情况。我正在尝试编写如下所示的代码,但出现错误“Expected a value of type Any!”

whenever(contactDao.mergeList<Contacts>(any(), any<UpdateResultDto>(), any())).then { invocation ->
   invocation.getArgument(1, UpdateResultDto::class.java)?.status = ResultStatus.ERROR
}

如何设置第二个参数的状态字段值?

我知道,该方法可以重构为返回 resultDto,但是,我想知道它是如何完成的。

4

0 回答 0