如何使用 MockWebServer 在 response.body().string() 中触发 IOException

问题描述

我有这个改造电话:

#include <QApplication>
#include <QAction>
#include <QMenu>

int main(int argc,char** argv){
    QApplication qapp_base = QApplication(argc,argv);
    QWidget qwin_main = QWidget();
    qwin_main.setFixedSize(1280,720);
    QMenu qmen_main = QMenu(&qwin_main);
    qwin_main.show();
    qmen_main.show();
    return qapp_base.exec();
}

并希望使用 MockWebServer 触发 api.enqueue(new Callback<ResponseBody>() { @Override public void onFailure(Call<ResponseBody> call,Throwable t) { t.printstacktrace(); } @Override public void onResponse(Call<ResponseBody> call,Response<ResponseBody> response) { try { if (response.isSuccessful()) { // 200 - 300 String responseBody = response.body().string(); ... } } catch (IOException e) { e.printstacktrace() } } } 中的 IOException

我试过了

.string()

但它以 MockResponse mockResponse = new MockResponse() .setResponseCode(200) .setSocketPolicy(SocketPolicy.disCONNECT_DURING_RESPONSE_BODY) .setBody("{}"); 结束。

如何触发 OnFailure

解决方法

类似于以下内容

  private void responseBodyFail(Protocol expectedProtocol) throws IOException {
    // Use a 2 MiB body so the disconnect won't happen until the client has read some data.
    int responseBodySize = 2 * 1024 * 1024; // 2 MiB
    server.enqueue(new MockResponse()
        .setBody(new Buffer().write(new byte[responseBodySize]))
        .setSocketPolicy(SocketPolicy.DISCONNECT_DURING_RESPONSE_BODY));