0

この次のコード:

import org.scalamock.scalatest.MockFactory
import org.scalatest.FlatSpec

case class Container[T](value: T)

trait Service[T] {
  def doWork(value: T): Unit
}

class DoesMatch[T](service: Service[T]) {
  def doMatch(container: Container[T]) = container match {
    case Container(value) => service.doWork(value)
  } 
}

class TestScalaMock extends FlatSpec with MockFactory {
  "Scala Mock" should "verify my call" in {
    val stubService = stub[Service[Int]]
    val matcher = new DoesMatch[Int](stubService)
    val container = Container(2)
    matcher.doMatch(container)
    (stubService.doWork _).verify(container)
  }
}

コンパイル エラー "overloaded method value verify with alternatives: (matcher: org.scalamock.FunctionAdapter1[Int,Booleam]) org.scalamock.CallHandler1[Int,Unit] with org.scalamock.Verify (v1: org.scalamock.MockParameter) を返します。 [Int]") org.scalamock.CallHandler1[Int,Unit] with org.scalamock.Verify は (xyContainer[Int])" には適用できません

ジェネリックを削除しても役に立ちません。スタブ/検証からモック/期待に交換すると、同じスタイルのコンパイル エラーが発生します。

私はscala 2.11.0を使用しています

  "org.scalatest" % "scalatest_2.11" % "2.2.1" % "test",
  "org.scalamock" %% "scalamock-scalatest-support" % "3.2" % "test"

どんな助けでも大歓迎です。

4

1 に答える 1

2

「verify」メソッドの型が間違っています。Int である必要があります。stubService は Service[Int] のタイプであり、コンテナも Container[Int] => DoesMatch で Int をサービスに渡します

(stubService.doWork _).verify(container.value)
于 2014-11-15T21:55:19.287 に答える