我有一个从存储库检索项目列表的功能。我不使用常规回调函数,而是传递一个函数并使用结果调用该函数。但是如何对这种类型的函数进行单元测试呢?是否有一些方法可以验证传入的函数是否被调用,或者应该重构并使用常规回调函数,并使用模拟的回调接口进行测试?
我的代码:
class WorklistInteractor @Inject
constructor(private val worklistRepository: WorklistRepository,
private val preferenceManager: PreferenceManager,
private val executor: Executor)
: WorklistDialogContract.Interactor, Executor by executor {
@Volatile private var job: Job? = null
override fun getWorklist(callback: (Result<List<WorklistItem>>) -> Unit) {
job = onWorkerThread {
val result = worklistRepository.getWorklist().awaitResult()
onMainThread { callback(result) }
}
}
override fun cancel() {
job?.cancel()
}
}