Не могу никак придумать тест.
надо протестировать класс, экземпляр которого являет собой закачку (DownloadMember).
у класса есть всего 3 публичных метода:
void startDownloading();
void pauseDownloading();
void deleteDownload();
и много Get-методов:
int getState() const;
QString getFileName() const;
QString getDestination() const;
qint64 getSpeed() const;
qint64 getFileSize() const;
QTime getTimeToFinish() const;
qreal getProgress() const;
Проблема для меня заключается в том что я не знаю как подготовить екземпляр класса для тестирования на нем одного с 3-ех методов (void startDownloading(); например)
мой тест выглядит так:
void TestDownloadManager::downloadMember_startDownloading_Test()
{
DownloadMember downloadMember = DownloadMember("http://test.txt", QDir::currentPath());
downloadMember.startDownloading();
QVERIFY(downloadMember.getState() == DownloadMember::Downloading);
}
но он никогда не будет работать потому, что конструктор DownloadMember требует реального URL, потому, что делает проверку сразу в конструкторе.
Правильно будет переопределить конструктор DownloadMember? Что для этого надо?Вот код конструктора:
DownloadMember::DownloadMember(const QString &sourceURL, const QString &directory, QObject *parent) :
QObject(parent)
{
QUrl source = QUrl(sourceURL);
fileName = source.path().split('/').last();
destination = directory;
timeToFinish = QTime();
PART_SIZE = 4000000;
bytesDownloaded = 0;
currentPartSize = 0;
fileSize = 0;
progress = 0;
speed = 0;
currentState = NotReady;
sender = QSharedPointer<Sender>(new Sender(source,this));
speedCounter = QSharedPointer<SpeedCounter>(new SpeedCounter(this));
connect(sender.data(), SIGNAL(newReply(QNetworkReply*)), SLOT(replyRecivingStarted(QNetworkReply*)));
connect(speedCounter.data(), SIGNAL(speedChanged(qint64)), SLOT(speedChanged(qint64)));
sender->getDownloadInfo();
qDebug() << "(DownloadMember)Initialisation - completted";
}