我正在为元数据加载器进行单元测试,它采用QDomNode并将信息提取到std :: map中。 现在我必须创建包含我想要提取的所有信息的QDomNode。 通常这个节点是从xml文件中取出的,这就是为什么我认为我可能会这样做:
QDomNode metaNode()
{
QDomDocument document;
QByteArray metaArray(
"<item name=\"author\">testManager</item>"
"<item name=\"campaign\">testCampaign</item>"
"<item name=\"comment\">testComment</item>"
"<item name=\"date\">25.04.2013</item>"
"<item name=\"description\">testDescription</item>"
"<item name=\"projnum\">1</item>"
"<item name=\"title\">test</item>");
document.setContent(metaArray);
QDomNode meta = document;
return meta;
}
但它似乎不起作用。当我调用meta.childNodes()时,我希望有一个包含七个项目的列表,但只获得第一个项目,名称为“author”,其值为“testManager”;
答案 0 :(得分:1)
因此在Mat指出我错过了一个&#39;容器&#39;节点,我试过并使它工作。
这是工作代码,它使我能够像从Xml-File中读取的那样使用节点(但没有文件系统依赖性):
QDomNode metaNode()
{
QDomDocument document;
QByteArray metaArray(
"<metadata>"
"<item name=\"author\">testManager</item>"
"<item name=\"campaign\">testCampaign</item>"
"<item name=\"comment\">testComment</item>"
"<item name=\"date\">25.04.2013</item>"
"<item name=\"description\">testDescription</item>"
"<item name=\"projnum\">1</item>"
"<item name=\"title\">test</item>"
"</metadata>");
document.setContent(metaArray);
QDomNode meta = document;
return meta;
}
答案 1 :(得分:0)
使用实际的test.xml文件不会使测试更好吗?由于您实际上想要测试带有.xml文件并返回QMap的代码,我认为最好在测试中使用.xml文件。