Qooxdoo:如何在异步测试中调用MMock.verify()

时间:2014-03-20 11:16:10

标签: unit-testing asynchronous qooxdoo

我尝试在异步情况下使用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)消息。

0 个答案:

没有答案