信号间谍 QML 类型

启用信号发出的内省。 更多...

导入语句import QtTest
继承

Item

属性

方法

详细描述

在以下示例中,安装了 SignalSpy 来监视用户定义的按钮类型的 "clicked" 信号。当信号发送时,间谍的 count 属性将增加。

Button {
    id: button
    SignalSpy {
        id: spy
        target: button
        signalName: "clicked"
    }
    TestCase {
        name: "ButtonClick"
        function test_click() {
            compare(spy.count, 0)
            button.clicked();
            compare(spy.count, 1)
        }
    }
}

上述测试方式适用于同步发送的信号。对于异步信号,可以使用 wait() 方法来阻塞测试,直到信号发生(或超时)。

另请参阅TestCaseQt Quick Test

属性文档

count : int [只读]

该属性定义了自上次调用 clear() 方法以来从 target 发射 signalName 的次数。

另请参阅targetsignalNameclear


signalArguments : list [只读]

此属性包含已发射信号参数的列表。每次信号发射都会将一个包含信号参数的项目追加到列表中。当连接到新的 target 或新的 signalName 或调用 clear() 方法时,signalArguments 将重置为空。

另请参阅signalNameclear


signalName : string

此属性定义要监听 target 上的信号名称。

另请参阅targetcount


目标对象 : var

该属性定义了将用于监听 signalName 信号发射的目标对象。

另请参阅signalNamecount


valid : bool [只读]

该属性定义了当前信号连接状态。当 signalName 信号的target 成功连接时,它将变为 true,否则为 false。

另请参阅counttargetsignalNameclear


方法文档

clear()

count 清零,将 valid 重置为 false,并将 signalArguments 清空。

另请参阅countwait


wait(超时时间 = 5000)

等待在 target 上发出 signalName 信号,最多等待 超时时间 毫秒。如果信号未发出,测试用例将失败。

SignalSpy {
    id: spy
    target: button
    signalName: "clicked"
}

function test_async_click() {
    ...
    // do something that will cause clicked() to be emitted
    ...
    spy.wait()
    compare(spy.count, 1)
}

有两种可能的场景:调用 wait() 时信号已发出,或信号尚未发出。wait() 函数通过在信号已发生的情况下立即返回来处理第一种情况。

可以使用 clear() 方法丢弃已发生信号的有关信息,以使 wait() 与未来的信号发射同步。

另请参阅clear() 和 TestCase::tryCompare


© 2024 Qt公司有限公司。本文件中包含的文档贡献属于其各自所有者的版权。本文件中提供的文档是根据免费软件基金会发布的 GNU自由文档许可 version 1.3 的条款许可的。Qt及其相关标志是芬兰及全球其他国家的 Qt公司有限公司的商标。所有其他商标均为其各自所有者的财产。