gpt4 book ai didi

scala - 如何使用 Mockito 模拟返回值类实例的函数?

转载 作者:行者123 更新时间:2023-12-02 01:13:07 27 4
gpt4 key购买 nike

我正在尝试模拟一个返回值类实例的方法(extends AnyVal)我收到了一些奇怪的错误消息,我理解(因为值类删除)但我很惊讶 Mockito 无法应对。

我的类(class):

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,当然可以正常工作。

最佳答案

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

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

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

关于scala - 如何使用 Mockito 模拟返回值类实例的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44030265/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com