QML UnitTest缺少C++上下文属性

kuu*_*kuu 7 qt unit-testing qml qtquick2 qqmlapplicationengine

我发现这个老帖子面临同样的问题:如何模拟QML组件

不幸的是,没有解决方案.回顾一下问题:我有一个导入模块的QMLTestCase.但是这个模块依赖于一个根上下文属性,它通常会被添加到main.cpp.由于这是一个TestCase,我对如何QQmlApplicationEngine启动没有影响.

如何添加缺少的上下文属性?

arx*_*ian 0

编辑:

在 Qt 5.11 中,Qml UnitTesting 新增了一章。请参阅在 QML 测试之前执行 C++一章 。

之前的回答:

您可以通过将 QML 项传递到 C++ 端来获取 QQmlEngine 的实例,在 C++ 端您可以使用方法qmlEngine

因此,您可以通过调用来设置上下文属性

qmlEngine(passedQmlItem)->rootContext()->setContextProperty("propertyName", propertyValue);
Run Code Online (Sandbox Code Playgroud)