如何模拟QML组件

luc*_*0ni 8 c++ unit-testing mocking qml qt5

实际上我正在尝试对嵌入C++对象QML组件进行一些测试.不幸的是,当我执行测试时,我遇到了一些错误.QML文件无法识别C++对象.这也很有意义,因为在main.cpp文件中设置了C++对象.

我的问题是:我如何模拟上下文属性来执行QML测试?或者其他人说,我怎样才能用混合Qt/QML代码进行单元测试?

tro*_*ane 0

据我了解,您遇到了和我同样的问题。前段时间我写了这个模拟: https: //bitbucket.org/troyane/qml-cpp-template(您可以根据您的目的免费使用该代码)。

看一下main.cpp,你可以看到两种做事的方法:

// 1 case:
// Register type and create object at QML side
qmlRegisterType<CppClass>("CppClassModule", 1, 0, "CppClass");
QQmlApplicationEngine engine(QUrl("qrc:///qml/main.qml"));
qDebug() << "Qt version: " << qVersion();
// 2 case:
// Create object here and "move it up" to QML side
// engine.rootContext()->setContextProperty("cppClass", new CppClass);
Run Code Online (Sandbox Code Playgroud)

祝你好运!