【问题标题】:QUnit test hangsQUnit 测试挂起
【发布时间】:2012-12-13 04:38:11
【问题描述】:

我是 qunit 和 JS 测试的新手。被测代码执行一个必须在我断言之前完成的动画 (slideDown)。看起来很简单,但我似乎无法让它工作。

asyncTest('my test', function() {
  setTimeout(function() {
    // assert something here
    start();
  }, 1000);
});

永远不会调用回调,测试挂起。

我也尝试过其他各种方法。例如:

test('my test', function() {
  expect(1);
  stop(1000);
  // assert something here
  start();
});

我可以看到startstop 都被调用了,test 调用完成了,但它仍然挂起。

如果重要的话,这是我的设置:

setup: function() {
  this.server = sinon.fakeServer.create();
  this.server.respondWith([200, { 'Content-Type': 'text/html' }, new_items()]);
  // invoke the actual system under test
  this.server.respond();
}

【问题讨论】:

  • 如果您只使用像ok(true, "always fine"); 这样的简单断言,第一个示例是否有效? IE。 asyncTest() 通常对您有用吗?因为如果是这样,那一定是你的断言代码破坏了你的测试。
  • 我可能不太清楚,传入 setTimeout 的回调永远不会运行。
  • 它从来没有被调用过?不管断言中的代码多么简单? my jsFiddle examples 呢?
  • 我很确定回调中的任何内容都不会影响它是否被调用。怎么可能?
  • 没错,除非有语法错误或类似的东西。我的观点是:你的代码看起来不错,我看不出有明显的错误。 setTimeout() 是否对你有用?

标签: javascript testing qunit


【解决方案1】:

听起来 Sinon 假计时器已打开 (http://sinonjs.org/docs/#clock)。设置超时后调用this.clock.tick(1001)

【讨论】:

    猜你喜欢
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-15
    • 2013-04-12
    • 1970-01-01
    • 2022-10-04
    • 1970-01-01
    相关资源
    最近更新 更多