4

特性の val をモックしたいと思います。たとえば、このコードでは、 val をモックしますbaz

trait Foo {
  def bar(): Int
  val baz: Int
}

val fooMock = mock[Foo]
(fooMock.bar _).expects().returning(5)
(fooMock.baz _).expects().returning(6) //doesn't compile

doSomeThing(fooMock)

テストでこれを解決するために、Foo を拡張bazし、次の方法で実装しました。

trait FooTest extends Foo {
  override val baz: Int = 5
}

val fooMock = mock[FooTest]
(fooMock.bar _).expects().returning(6)

doSomeThing(fooMock)

しかし、これは醜いので、scala モックを使用してこれを行うより標準的な方法があることを望んでいました。

この質問への回答を見てきましたが、特性のvaltoを変更する必要があり、valdefを保持したいbaz

4

1 に答える 1