Тест QUnit зависает

Я новичок в тестировании 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();
});

Я вижу, что вызываются и start, и stop, и вызов 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();
}

person Tim Scott    schedule 13.12.2012    source источник
comment
Работает ли первый пример, если вы используете только простое утверждение, такое как ok(true, "always fine");? т.е. asyncTest() у вас вообще работает? Потому что если это так, то это должен быть ваш код утверждения, который ломает ваш тест.   -  person Odi    schedule 15.12.2012
comment
Возможно, я не совсем ясно выразился, обратный вызов, переданный в setTimeout, никогда не запускается.   -  person Tim Scott    schedule 15.12.2012
comment
Это никогда не называется? Каким бы простым ни был код в утверждении? Как насчет моих примеров jsFiddle?   -  person Odi    schedule 15.12.2012
comment
Я почти уверен, что все, что находится внутри обратного вызова, не может повлиять на то, вызывается ли оно. Как это могло быть?   -  person Tim Scott    schedule 16.12.2012
comment
Это правда, если нет синтаксической ошибки или чего-то в этом роде. Я хочу сказать: ваш код выглядит хорошо, я не вижу в этом очевидной ошибки. Работает ли setTimeout() в целом у вас?   -  person Odi    schedule 16.12.2012


Ответы (1)


Похоже, фальшивый таймер Sinon включен (http://sinonjs.org/docs/#clock). Позвоните this.clock.tick(1001) после установки времени ожидания.

person keithjgrant    schedule 07.01.2013