Scalamock:如何获得代理模拟的“期望”?

rab*_*ens 5 scala scalatest scalamock

我正在将 Scalamock 与 ScalaTest 一起使用,并尝试模拟 Java 接口。我目前有:

private val _iface = mock [MyInterface]
Run Code Online (Sandbox Code Playgroud)

现在我想做

_iface expects `someMethod returning "foo" once
Run Code Online (Sandbox Code Playgroud)

但是编译器没有找到expects.

我进口org.scalatest._org.scalamock.scalatest._。我还缺少什么?

Paw*_*cha 1

首先,代理模拟在 ScalaMock 3 中支持得不是很好,我认为它们将在 ScalaMock 4 中完全删除。你真的需要使用代理模拟而不是宏模拟吗?

这应该有效:

package example

import org.scalatest.FlatSpec
import org.scalatest.Matchers
import org.scalamock.scalatest.proxy.MockFactory

trait MyInterface {
    def someMethod : String
}

class MyTest extends FlatSpec with Matchers with MockFactory {
  "MyInterface" should "work" in {
    val m = mock[MyInterface]
    m.expects('someMethod)().returning("foo")
    m.someMethod shouldBe "foo"
  }
}
Run Code Online (Sandbox Code Playgroud)

如果没有,请检查ScalaMock 代理模拟单元测试以获取更多示例。