3

我正在尝试模拟一个返回值类实例的方法extends AnyVal

我的课:

case class MyValueClass(value: String) extends AnyVal

我要模拟的功能:

trait ToMock {
  def something(someParams: String): MyValueClass
}

和模拟:

val theMock = mock[ToMock]
val returned = MyValueClass("test")
when(theMock.something("test")).thenReturn(returned)

此代码生成以下错误:

MyValueClass cannot be returned by something()
something() should return String

但是,当然,如果我让它返回一个字符串,它就不再编译了......

如果我删除extends AnyVal,当然可以正常工作。

4

1 回答 1

2

好的,我找到了一个有效的答案。我需要使用较旧的 mockito 风格doReturn

doReturn(returned.value).when(theMock).something("test")

因为它不是类型安全的,所以它可以工作。但并不完全令人满意,因为我放弃了类型安全。

于 2017-05-18T09:27:06.010 回答