【问题标题】:How can you mock a method call on a trait with ScalaMock?如何使用 ScalaMock 模拟对 trait 的方法调用?
【发布时间】:2017-11-01 23:11:55
【问题描述】:

在您指向文档之前,请指出这个最小的失败示例有什么问题:

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

class StubbingTest extends FlatSpec with MockFactory {
  trait Foo {
    def f(x: Int): Int
  }

  "foo" should "stub" in {
    val foo = stub[Foo]

    (foo.f _).when(3).returns(4)

    assert(foo.f(3) == 4)
  }
}

在第 11 行导致java.lang.NoSuchMethodException: com.sun.proxy.$Proxy4.mock$f$0()(foo.f _).when ...

根据文档,这应该可以工作。我在这里错过了什么?

【问题讨论】:

    标签: scala scalatest scalamock


    【解决方案1】:

    我在浏览 Scaladoc 时完全靠运气发现了这一点:

    改变

    import org.scalamock.scalatest.proxy.MockFactory
    

    import org.scalamock.scalatest.MockFactory
    

    我的 IDE 的自动导入失败了,但如果 ScalaMock 文档示例包含正确的导入,它会真的很有帮助。

    【讨论】:

    • 天哪,这太微妙了。我花了几个小时才找到它。希望这对其他人有所帮助。
    • 您似乎回答了自己的问题。您认为文档可以改进吗?用户指南实际上已经列出了导入:scalamock.org/user-guide/integration,scaldocs 也是如此:static.javadoc.io/org.scalamock/scalamock_2.11/4.0.0/…
    • 是的,但如果它更接近我正在查看的代码示例会更好。也许每页一次,以帮助世界上的复制面食厨师:P
    猜你喜欢
    • 2014-01-25
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多