【问题标题】:How to use MockitoSugar with AsyncFunSuite in Scalatest?如何在 Scalatest 中将 MockitoSugar 与 AsyncFunSuite 一起使用?
【发布时间】:2020-06-12 10:12:08
【问题描述】:

我无法将MockitoSugarAsyncFunSuite 一起使用。简而言之:

这个例子有效(取自Scalatest documentation

class AddSuite extends AsyncFunSuite {

  def addSoon(addends: Int*): Future[Int] = Future { addends.sum }

  test("addSoon will eventually compute a sum of passed Ints") {
    val futureSum: Future[Int] = addSoon(1, 2)
    futureSum map { sum => assert(sum == 3) }
  }

}

但是这个例子没有(因为它有MockitoSugar

class AddSuite extends AsyncFunSuite with MockitoSugar {

  def addSoon(addends: Int*): Future[Int] = Future { addends.sum }

  test("addSoon will eventually compute a sum of passed Ints") {
    val futureSum: Future[Int] = addSoon(1, 2)
    futureSum map { sum => assert(sum == 3) }
  }

}

为后者报告了两次编译但零测试,而为前者报告了一次测试。这发生在 IntelliJ 和 sbt 上。为什么这不起作用?我该如何解决这个问题?

我正在使用:

  • scala 2.12
  • 最新的 3.1.1
  • mockito-core 3.3.3
  • mockito-scala 1.13.10

【问题讨论】:

    标签: scala asynchronous mockito scalatest mockito-scala


    【解决方案1】:

    没关系,在查看 mockito-scala 代码库后发现。我应该使用AsyncMockitoSugar 而不是MockitoSugar。所以应该是:

    class AddSuite extends AsyncFunSuite with AsyncMockitoSugar {
    
      def addSoon(addends: Int*): Future[Int] = Future { addends.sum }
    
      test("addSoon will eventually compute a sum of passed Ints") {
        val futureSum: Future[Int] = addSoon(1, 2)
        futureSum map { sum => assert(sum == 3) }
      }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-11
      • 2015-11-16
      • 2021-03-08
      • 1970-01-01
      • 2011-09-11
      • 2012-11-28
      • 2020-04-05
      • 2021-08-24
      相关资源
      最近更新 更多