首页 > 解决方案 > 如何使用 RETURNS_DEEP_STUBS 模拟接口 HttpResponse

问题描述

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

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

httpResponse 是由创建的模拟

val httpResponse = mock(HttpResponse::class.java, RETURNS_DEEP_STUBS)

我的问题是httpResponse当我使用RETURNS_DEEP_STUBS. 我猜这是因为 HttpResponse 是一个接口(?)。

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

可以模拟这样的界面吗?如果有怎么办?

标签: kotlininterfacemockingmockitohttpresponse

解决方案


只需创建另一个模拟:

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

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

一步步。


推荐阅读