【发布时间】:2020-01-07 09:36:06
【问题描述】:
我正在尝试使用三个参数对方法进行存根,以返回关于其中一个参数的不同响应:
val mocked = mock[MyService]
mocked.someInitialization returns mock[State]
mocked.complexMethod(*, *, *) answers { (_:State, discriminant:Discriminant, _:Delegate[MyService]) =>
discriminant match {
case _:FirstKind => Right(Option.empty[String])
case SecondKind(value:String) => Right(Some(value))
case _ => ???
}
}
但是,我的测试失败并显示上述消息:
SmartNull returned by this unstubbed method call on a mock:
myService.complexMethod(
Mock for State, hashCode: 1730688778,
FirstKind("UnusedValue"),
my.system.FixturesAndMock$FakeDelegate@2b5f8e61
); (of class scala.util.Either$MockitoMock$854506859)
(我不明白句子“of class scala.util.Either$MockitoMock$854506859”)
注意:
- 使用
mocked.complexMethod(*, *, *) returns Left(Nil)存根存在同样的问题。 - 使用
any[State], any[Discriminant], any[Delegate[MyService]]代替*, *, *不会改变任何内容。
我在 GraalVM 上的 Scala 2.12.8 上使用 org.mockito.scalatest.IdiomaticMockito。我究竟做错了什么;如何存根返回计算答案的方法?
谢谢
【问题讨论】:
标签: scala testing stubbing mockito-scala