Qt使用QDBusargument对函数进行单元测试
我有一个小的,什么应该是简单的,但它不是: 我有一个小函数,它接受一个QVariant,QVariant将包含一个QDBusArgument。 问题是为这个函数创建一个单元测试有点困难 创建QDBUS参数,然后用数据填充它,并将其传递给函数Qt使用QDBusargument对函数进行单元测试,qt,dbus,unit-testing,Qt,Dbus,Unit Testing,我有一个小的,什么应该是简单的,但它不是: 我有一个小函数,它接受一个QVariant,QVariant将包含一个QDBusArgument。 问题是为这个函数创建一个单元测试有点困难 创建QDBUS参数,然后用数据填充它,并将其传递给函数 Metadata MetaData::getMetadata(QVariant value){ Metadata _metadata; _metadata.clear(); const QDBusArgument &opti
Metadata MetaData::getMetadata(QVariant value){
Metadata _metadata;
_metadata.clear();
const QDBusArgument &optionsArgument = qvariant_cast<QDBusArgument>(value);
QString error;
//To ensure that we have correct data type as we expect key value
if(optionsArgument.currentType()==QDBusArgument::MapType)
{
_metadata = MetaData::decodeMapType(value, error);
}else{
_metadata.insert("error","not map type");
}
return _metadata;
}
我试着做下面的事情
静态参数边际
mArg.beginMap(QVariant::Int,QVariant::String);
int _key = 1;
QString _value = "test2";
mArg.beginMapEntry();
mArg << _key << _value;
mArg.endMapEntry();
mArg.endMap();
qDebug()<<mArg.currentSignature();
在执行qDebug时,我得到了一个尝试从只写属性读取的消息
这可能是主要问题,可以创建QDBusArgument并用数据填充它,但不可能读取它,所以它不打算这样使用,这导致了这样一个事实,将QDBusArgument作为输入的函数的单元测试是非常不同的
比尔。
迈克尔有人吗?试着自己做一个单元测试,但我不能。。。我甚至试过QDBusMetaType::demarshall和QDBusMetaType::marshall