我尝试在异步情况下使用qx.dev.unit.MMock.verify()
,效果与此相同:
, test_no_output_from_verify: function () {
var mocker = this.mock({ callMeOnce: function () { } });
mocker.expects('callMeOnce').once();
qx.event.Timer.once(function () {
mocker.verify();
this.resume();
}, this, 100);
this.wait(1000);
}
我发现,当verify()
调用抛出异常(因为未调用callMeOnce
函数)时,Test Runner会吞下该异常。它继续等待1000ms超时,然后抛出标准超时异常:' Asynchronous Test Error: Timeout reached before resume() was called.
'。
有什么方法可以让Test Runner立即停止并显示从mocker.verify()
抛出的异常?
==============================
编辑:在发布问题后再次阅读手册显示我的错误。正确的方法是将verify()调用放在resume()中,因此:
, test_no_output_from_verify: function () {
var mocker = this.mock({ callMeOnce: function () { } });
mocker.expects('callMeOnce').once();
qx.event.Timer.once(function () {
this.resume(function () {
mocker.verify();
});
}, this, 100);
this.wait(1000);
}
这按预期工作,我在Test Runner中得到ExpectationError: Expected callMeOnce([...]) once (never called)
消息。