我如何在 C++ 上模拟这个?

How do I mock this on C++?

FuncRes Test::test(HttpRequest& request, std::string& result) {
    try {
        auto httpClientSync = HttpClientSync::create(param);
        HttpResponse response = httpClientSync->execute(request);
        if (...) {
            return FuncRes::SUCCESS;
        } else if (...) {
            return FuncRes::RETRY;
        } else {
            return FuncRes::FAILED;
        }
    } catch (...) {
        return FuncRes::RETRY;
    } catch (...) {
        return FuncRes::FAILED;
    }
}

httpClient Sync 是一个局部变量,当测试完成时它会销毁。 我很困惑是否可以模拟 HttpClient Sync 和“执行”方法?

将此函数重构为两部分,一部分创建真正的 HttpClientSync,另一部分接受 HttpClientSync 接口:

FuncRes Test::test(HttpClientSync& httpClientSync, HttpRequest& request, std::string& result);

FuncRes Test::test(HttpRequest& request, std::string& result) {
  auto httpClientSync = HttpClientSync::create(param);
  test(httpClientSync, request, result);
}

然后测试在参数中接受 HttpClientSync 的变体,并传递模拟而不是真实客户端。

如果您需要测试一些调用此 test 函数的 other 代码,并且您仍想模拟 HttpClientSync,则不要存储 param在您的测试 class 中,存储 HttpClientSync& client 实例,并将其传递给构造函数。