在Android中使用MockK模拟DeferredAsyncTask的响应

时间:2019-01-07 09:35:47

标签: android unit-testing mockk

我正在使用MockK库进行单元测试

我想模拟以下方法的响应

private fun removeDuplicatesResponse(bloodGlucoseDuplicateIds: List<String>, eventDuplicateIds: List<String>): Promise<Void, Throwable, Void> {
        val task = object : DeferredAsyncTask<Void, Void, Void>() {
            @Throws(Exception::class)
            override fun doInBackgroundSafe(vararg params: Void): Void? {
                return null
         }
      }
      task.executeOnExecutor(mExecutorService)
      return task.promise()
}

我在每个{}块下面使用

every { mEventService.removeDuplicates(any(), any()).waitSafely() } answers { response() }

和下面的假响应响应方法

private fun response(): Promise<Void, Throwable, Void> {
    val task = object : DeferredAsyncTask<Void, Void, Void>() {
        @Throws(Exception::class)
        override fun doInBackgroundSafe(vararg params: Void): Void? {
            return null
        }
    }
    task.executeOnExecutor(mExecutorService)
    return task.promise()
}

但是当我尝试执行removeDuplicatesResponse()时,它什么也不做,并且会不断执行

任何人有任何想法,然后请让我知道谢谢

0 个答案:

没有答案