Webサーバーへの非同期リクエストをテストしたいと思います。そのために、数行のコードをすばやく試すための簡単な単体テストを作成しています。
void AsynchronousCall::testGet()
{
QNetworkAccessManager *nam = new QNetworkAccessManager(this);
QUrl url("http://myownhttpserver.org");
QNetworkRequest req(url);
this->connect(nam, SIGNAL(finished(QNetworkReply*)), this, SLOT(reqFinished(QNetworkReply *)));
QNetworkReply *rep = nam->get(req);
}
void AsynchronousCall::reqFinished(QNetworkReply *rep)
{
qDebug() << rep->readAll();
qDebug() << "finshed";
}
問題は、reqFinished()に到達しないことです。単純なQEventLoopと、nam-> get(req);の直後にloop.exec()がある場合。リクエストが実行されます。
ヒントはありますか?すべてのユニットテストでloop.exec()を使用する必要がありますか?