如何使用RETURNS_DEEP_STUBS模拟接口HttpResponse

时间:2019-05-20 13:27:45

标签: kotlin interface mocking mockito httpresponse

调用这些函数时,我想返回200:

`when`(httpResponse.statusLine.statusCode).thenReturn(200)

httpResponse是由

创建的模拟
val httpResponse = mock(HttpResponse::class.java, RETURNS_DEEP_STUBS)

我的问题是,当我使用httpResponseRETURNS_DEEP_STUBS为空。我猜这是因为HttpResponse是一个interface(?)。

如果我跳过RETURNS_DEEP_STUBS,我将在第一个statusLine之后无法调用任何函数

可以模拟这样的接口吗?如果可以,怎么办?

1 个答案:

答案 0 :(得分:1)

只需创建另一个模拟:

val httpResponseStub = mock(HttpResponse::class.java);
val statusLineStub= mock(StatusLine::class.java);

when(statusLineStub.statusCode).thenReturn(200);
when(httpResponseStub.statusLine).thenReturn(statusLineStub);

逐步。