Я пытаюсь протестировать класс, который использует QIODevice
. На самом деле объект, вероятно, будет использовать QFile
, но для моего модульного теста я бы предпочел использовать QBuffer
для скорости. Инъекция зависимости и полиморфизм объединяются, чтобы получить то, что я хочу.Как сделать неприменимый QIODevice
У меня есть проблема, однако. Мой конструктор класса выглядит следующим образом:
Object::Object(QIODevice& source)
{
if(!source.open(QIODevice::ReadOnly))
{
qDebug("Object: Could not open source.");
}
}
Тогда в моем тесте я проверить сообщения:
void TestObject::printsErrorOnOpenFailure()
{
QTest::ignoreMessage(QtDebugMsg, "Object: Could not open source.");
QBuffer buffer;
Object obj(buffer);
}
К сожалению, до сих пор кажется открытым, чтобы добиться успеха даже без QByteArray
оперировать. Каков наилучший способ дать моему объекту QIODevice
, который я знаю, что он не может открыть?
Зачем вам нужен указатель к вашему 'QIODevice'? – leemes
Потому что я не думал об этом достаточно тщательно, когда упростил код установки для примера. Я удалю это, так как это не важно. – cgmb
Хорошо. Я просто задавался вопросом ...;) – leemes