Mockito Test: verify static method was called inside object class

Viewed 105

// writing junit ExerciseMainLogger class so how to verify AnalyticsLog.insertEventLog(builder) using Mockito I have mocked AnalyticsLog class but getting error Actually, there were zero interactions with this mock. Wanted but not invoked


object ExerciseMainLogger {

fun setLog(eventName: String, screenId: String = "", dimension: Map<String, String> = mapOf()) {
        LOG.d(TAG, "setLog - $eventName, $screenId, $dimension")
        val builder = LogBuilders.EventBuilder()
                .setEventName(eventName)
                .setEventType(LogBuilders.EventType.NORMAL)

        if (screenId.isNotEmpty()) {
            builder.setScreenView(screenId)
        }

        if (dimension.isNotEmpty()) {
            builder.setDimension(dimension)
        }

        AnalyticsLog.insertEventLog(builder)
    }
}

AnalyticsLog Class

object AnalyticsLog {
@JvmStatic
   fun insertEventLog(eventBuilder: EventBuilder) {
       if (TestConfig.isTestMode()) {
           LOG.d(TAG, "[SA] test mode")
           return
       }

       try {
           val eventLogs = eventBuilder.build()
           val eventId = eventLogs[EVENT_ID_PROPERTY]
           val result = insertLog(eventLogs)
           if (FeatureManager.getInstance().getBooleanValue(FeatureList.Key.COMMON_DEVELOPER_MODE)) {
               LOG.d(TAG, "[SA-DEV] insertEventLog: EventId: $eventId, logs: $eventLogs, send result: $result")
           } else {
               LOG.d(TAG, "[SA] insertEventLog: EventId: $eventId, send result: $result")
           }
       } catch (e: Exception) {
           LOG.w(TAG, "[SA] insertEventLog exception, " + e.message)
           e.printStackTrace()
       }
   }

}


My Test method looks like below. I trying to run the test case with the JUnit but getting error


mockkStatic(SamsungAnalyticsLog::class)
       every { SamsungAnalyticsLog.insertEventLog(builder) } just runs
       ExerciseMainLogger.setLog(
           ExerciseMainLogger.EX2012,
           screenId = screenId,
           dimension = dimension
       )
       verify(exactly = 1) { AnalyticsLog.insertEventLog(builder) }
 

Verification failed: call 1 of 1: class com.samsung.android.wear.shealth.base.log.SamsungAnalyticsLog.insertEventLog(eq(com.samsung.context.sdk.samsunganalytics.LogBuilders$EventBuilder@71a04ac6))). Only one matching call to SamsungAnalyticsLog(static SamsungAnalyticsLog)/insertEventLog(EventBuilder) happened, but arguments are not matching: [0]: argument: com.samsung.context.sdk.samsunganalytics.LogBuilders$EventBuilder@7b05129b, matcher: eq(com.samsung.context.sdk.samsunganalytics.LogBuilders$EventBuilder@71a04ac6), result: - Stack trace:


0 Answers
Related