Невозможно издеваться над методом - Мокито - Kotlin - PullRequest
0 голосов
/ 01 мая 2020

Я пытаюсь смоделировать метод (getQualityControlCheckDataForUplift (ArgumentMatchers.any (), ArgumentMatchers.anyFloat ())), чтобы вернуть qcchecks, которые я определил в моем тестовом примере, но я получаю ошибку.

Any предложения о том, где я делаю это неправильно, пожалуйста

org.mockito.exceptions.base.MockitoException: Unable to create mock instance of type 'QualityControlChecksDataProvider'

QualityControlChecksDataProvider

class QualityControlChecksDataProvider @Inject constructor(
    private val offlineDataStorage: OfflineDataStorage,
    private val app: App
) {
    private val mapOfQCChecksForMilestone = LinkedHashMap<String, ArrayList<QualityControlCheck>?>()

 fun getQualityControlCheckDataForUplift(qualityControlMilestone: QualityControlMilestone, uplift: Float):
        ArrayList<QualityControlCheck>? {
        val qcChecksForUplift: ArrayList<QualityControlCheck>? = ArrayList()
        val qcChecksForMilestone = mapOfQCChecksForMilestone[qualityControlMilestone.milestoneText]
        qcChecksForMilestone?.forEach {
            if (it.uplift == uplift) qcChecksForUplift?.add(it)
        }
        return qcChecksForUplift
    }

}

В моем модульном тесте я пытаюсь смоделировать

@Test
    fun `upliftedVolumeUpdated abcd` () {

  val qualityControlCheckDataProvider = spy(QualityControlChecksDataProvider::class.java)
        every(qualityControlCheckDataProvider.getQualityControlCheckDataForUplift(ArgumentMatchers.any(), ArgumentMatchers.anyFloat())).thenReturn(qualityControlChecks)
}

1 Ответ

0 голосов
/ 01 мая 2020

Я не думаю, что вы хотите шпион здесь, я думаю, что вы хотите издеваться. Дайте этому попытку

@Test
fun `upliftedVolumeUpdated abcd` () {
    val qualityControlDataProviderMock = mock<QualityControlChecksDataProvider> {
        on { getQualityControlCheckDataForUplift(any(), any()) } doReturn qualityControlChecks
    }
}
...