Scala Mockito:舍弃单位声明的非单位值

时间:2019-03-22 17:34:08

标签: scala

有人可以解释一下这是什么意思吗

  

[July August September October November Other] [1, 0, 0, 0, 0, 50 ] [1, 0, 0, 0, 0, 30 ] [1, 0, 0, 0, 0, 60 ] [1, 0, 0, 0, 0, 22 ] [1, 0, 0, 0, 0, 5 ]

我看了一些在线文章,但不太了解。

这是我使用Scala Mockito编写的ScalaTest代码片段

Error:(32, 28) discarded non-Unit value
      dataFrameReader.load() wasCalled once

如果我拿出 ... val dataFrameReader = mock[DataFrameReader] dataFrameReader.format(anyString) shouldReturn dataFrameReader dataFrameReader.option(anyString, anyString) shouldReturn dataFrameReader dataFrameReader.load() wasCalled once ,那就可以了

我不知道这是什么意思,因为我正在对load()返回的内容调用“ wasCalled”,并且wasCalled once解析为一个单位

我在这里想念什么?

1 个答案:

答案 0 :(得分:2)

假设您是从Apache Spark模拟DataFrameReader.load,则其返回类型实际上是DataFrame而不是Unit

def load(): DataFrame

另一方面,wasCalled的返回类型确实为Unit

def wasCalled(t: Times)(implicit order: VerifyOrder): Unit

因此,我们遇到的情况类似于

def f(): Unit = {
  g() // g returns DataFrame which gets discarded by f
}

def g(): DataFrame

如果设置了scalacOptions += "-Ywarn-value-discard",则会被编译器标记。

此问题自resolvedmockito-scala 1.2.2