如何在scala上向mock添加方法



我有一个这样的代码:

class Object3 (
param1: String
param2: String
)
class Object1 (
param1: String
param2: Object2
) extends Message
class SampleClassSpec extends WordSpec with MockitoSugar {
"A sender" should {
"send a message" in {
val client = mock[Client]
var message = mock[Object1]
var detail = mock[Object2]
when(message.param2).thenReturn(detail)
when(message.param2.toJson).thenReturn(detail.toJson) // give me NPE
val sender = new Sender(client)
sender.prepareandsend(message) // second NPE
verify(client).send(message.param2.toJson.prettyPrint)
}
}
}

问题是,当我想添加方法来获得格式化的json时,我得到了NPE,我不想发送整个Object1,只想发送Object3;我正在使用spray.json._。如果我删除了给我NPE的行,那么我在"prepareandsend"上得到了第二个NPE

我的问题是如何将此方法添加到Json.prettyPrint到mock?或者也许还有另一种方法可以做到这一点。我真的是个初学者。

我对Scala一无所知,但我以前曾与Mockito合作过。在我看来,问题在于你没有为细节设定任何行为。由于它也是一个mock,所以它没有任何行为,所以当您调用detail.toJson 时,它不会返回任何内容

你应该用添加一些行为细节

when(detail.toJson).thenReturn(/* your JSON code */)

尝试:

when(param2.toJson).thenReturn(detail.toJson)

相反。

或者,您可以考虑使用Mockitos DEEP_STUBS机制。

相关内容

  • 没有找到相关文章

最新更新