링커 트릭을 사용할 수 있지만 QNetworkAccessManager를 서브 클래 싱 할 수 있으므로 더 쉽게 찾을 수 있습니다.
class FailQNetworkAccessManager : public QNetworkAccessManager
{
Q_OBJECT
public:
FailQNetworkAccessManager(QObject *parent = Q_NULLPTR):QNetworkAccessManager(parent){}
protected:
QNetworkReply* createRequest(Operation op, const QNetworkRequest &originalReq, QIODevice *outgoingData = Q_NULLPTR)
{
QNetworkReply* rep = QNetworkAccessManager::createRequest(op, originalReq, outgoingData);
// Queue the abort to occur from main loop
QMetaObject::invokeMethod(req, "abort", Qt::QueuedConnection);
return rep;
}
};
그런 다음 테스트 코드는 진짜가 아닌 FailQNetworkAccessManager와 클래스를 제공 할 수 있습니다 : 당신이 실제로 연결되지 않는 버전을 만들고 싶어
예를 들어, 같은 뭔가를 할 수 , 모든 요청은 생성되는 즉시 중단해야합니다. (이것은 단지 예제 코드 일 뿐이므로 실제로이 코드를 아직 시도하지 않았습니다.이 코드를 헤더 & cpp 파일로 분할하는 것이 좋습니다.)
또한 시스템에 내장 된 테스트 프레임 워크 인 Qt Test을 살펴 봐야합니다.