Qt使用QDBusargument对函数进行单元测试

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

我有一个小的,什么应该是简单的,但它不是: 我有一个小函数,它接受一个QVariant,QVariant将包含一个QDBusArgument。 问题是为这个函数创建一个单元测试有点困难

创建QDBUS参数,然后用数据填充它,并将其传递给函数

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