簡體   English   中英

使用mockito嘲笑vararg元組

[英]Mocking a vararg tuple using mockito

我想嘲笑這個方法

def zadd[V: ByteStringSerializer](key: String, scoreMembers: (Double, V)*): Future[Long] 

試過這個

mock.zadd(anyString(), Seq((anyDouble(), any String()), (anyDouble(), anyString())): _*) 

不起作用,因為mockito說3匹配預期,但得到了5。

所以我嘗試使用如何正確匹配Mockito中的varargs

但是,我甚至無法使用該示例ArgumentMatchers.<String>any()列出的代碼ArgumentMatchers.<String>any()在我的IDE中被標記為錯誤,表示無法識別類型字符串

例如,mockito-scala支持開箱即用的varargs

import cats.implicits._
import org.mockito.ArgumentMatchersSugar
import org.mockito.cats.IdiomaticMockitoCats
import org.mockito.scalatest.IdiomaticMockito
import org.scalatest._
import org.scalatest.concurrent.ScalaFutures
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.Future

trait Foo {
  def zadd(key: String, scoreMembers: (Double, String)*): Future[Long]
}

class HelloSpec extends FlatSpec
    with Matchers
    with IdiomaticMockito
    with IdiomaticMockitoCats
    with ScalaFutures
    with ArgumentMatchersSugar {

  "Foo" should "mock varargs" in {
    val foo = mock[Foo]
    foo.zadd("", *) returnsF 42L
    foo.zadd("bar", (7.7, "qux")) returnsF 89L

    foo.zadd("", (1.1, "")).futureValue should be (42L)
    foo.zadd("bar", (7.7d, "qux")).futureValue should be (89L)
  }
}

哪里

libraryDependencies ++= Seq(
  "org.scalatest" %% "scalatest" % "3.0.8",
  "org.mockito" %% "mockito-scala" % "1.5.13",
  "org.mockito" %% "mockito-scala-scalatest" % "1.5.13",
  "org.mockito" %% "mockito-scala-cats" % "1.5.13",
  "org.typelevel" %% "cats-core"   % "2.0.0-M4"
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM