我想测试对网络服务器的异步请求。为此,我正在创建一个简单的单元测试来快速尝试几行代码:
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 和一个 loop.exec() 就在 nam->get(req); 之后 请求被执行。
有什么提示吗?我必须在每个单元测试中使用 loop.exec() 吗?