使用Mockito对Scala进行单元测试

我对使用Mockito在Scala中进行单元测试非常陌生。 thenReturn语句中出现错误。

it should "read null when readFromPostgresTarget is called with some 
         random driver" in {

Given("a null query is sent as query")
       val query = ""
       val pgObject = mock[PersistenceObject]
       val postgresPersistenceObject = 
       mock[PostgresspersistenceServiceTrait]
       val mockDF = mock[DataFrame]

When("it is passed to readFromPostgresTarget")
        when(postgresPersistenceObject.readFromPostgresTarget(any[String],mock[Spark 
                                      Session],pgObject)).thenReturn(mockDF)

        assert(postgresPersistenceObject.readFromPostgresTarget(query,sparkSession,pgObject) === any[DataFrame])

Then("a null value should be returned")
        verify(postgresPersistenceObject,times(1))
}

我遇到了错误-

overloaded method value thenReturn with alternatives:
  (x$1: Unit,x$2: Unit*)org.mockito.stubbing.OngoingStubbing[Unit] <and>
  (x$1: Unit)org.mockito.stubbing.OngoingStubbing[Unit]
 cannot be applied to (org.apache.spark.sql.DataFrame)
                .thenReturn(mockDF)

我尝试将mockDF中的thenReturn(mockDF)改成thenReturn(any[DatafRame]),但这并不能解决问题。

我尝试传递一个SparkSession而不是模拟它不起作用。

我不知道自己在犯什么错误。

hjxu1729 回答:使用Mockito对Scala进行单元测试

为避免这些问题(与Scala / Java互操作有关),您应该使用mockito-scala

本文链接:https://www.f2er.com/3164939.html

大家都在问