首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >默认参数的ScalaMock匹配

默认参数的ScalaMock匹配
EN

Stack Overflow用户
提问于 2017-03-23 20:55:32
回答 2查看 1.5K关注 0票数 0

我在试着模仿一个像

代码语言:javascript
复制
def foo(x: A, y: B, z: C = blah)

其中blah是我不想当场创建的java连接对象

然而,当我试图像

代码语言:javascript
复制
    (object.foo _)
  .stubs(a, b)

它出错了,并说重载的方法值存根带有其他选项.因为它在寻找第三个参数。不管怎么说有什么可以绕过这件事的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-24 12:17:18

我同意Matt的观点,但想指出ScalaMock (*) - http://scalamock.org/user-guide/matching/中有通配符语法

代码语言:javascript
复制
trait Foo {
  def foo(x: Int, y: Int, z: Int = 0): Int
}

val a: Int = ???
val b: Int = ???
val m = mock[Foo]

m.foo _ stubs(a, b, *)
票数 4
EN

Stack Overflow用户

发布于 2017-03-23 23:33:34

您可以在处理方法时使用通配符。

下面的测试通过了,我认为这就是您要寻找的:

代码语言:javascript
复制
class DefaultParameterTest extends FlatSpec with Matchers with MockFactory {

  class A {
    def foo(x: Int, y: Int, z: Int = 0): Int = 0
  }

  it should "work with a default parameter" in {
    val bar = mock[A]
    (bar.foo _).stubs(1, 2, _: Int).returning(5)

    bar.foo _ expects(1, 2, 0) returning 5 once()

    bar.foo(1, 2)
  }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42986816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档