首页 > 解决方案 > 使用 Scala 的 Mockito,任何匹配器都可以通过多种实现解决

问题描述

在我们的 Scala 项目中,我们使用 Mockito 进行测试。

我们遇到的一个烦人的问题是,在使用anymatcher 时,它总是存在,can't resolve symbol any尽管它不会影响构建或运行时中的代码。

anyMockito(2.12)中有两种实现:

  def any[T](implicit evidence$11 : scala.reflect.ClassTag[T]) : T = { /* compiled code */ }
  def any[T]() : T = { /* compiled code */ }

我们如何“帮助” Mockito 了解any他应该使用什么?

例如: 在此处输入图像描述

标签: scalamockito

解决方案


仔细检查您的build.sbt包含

libraryDependencies += "org.mockito" % "mockito-all" % "1.10.19" % Test

并且您的测试文件中有以下导入:

import org.mockito.Matchers.any

这是一个最小的工作片段(假设 ScalaTest):

import org.scalatest.FunSuite
import org.scalatest.mockito.MockitoSugar
import org.mockito.Mockito.when
import org.mockito.Matchers.any

class CalculatorTest extends FunSuite with MockitoSugar {
  test("calculator add method") {
    val calcMock = mock[Calculator]
    when(calcMock.add(any[Int], any[Int])).thenReturn(10)
    assert(calcMock.add(7, 3) == 10)
  }
}

在哪里trait Calculator { def add(a: Int, b: Int): Int }


推荐阅读