2015-11-17 6 views
0

Читаю Узел Craftsman Мануэль Кисслинг и в главе эмиттеров событий он предоставляет следующие жасмин проверочного SPECКак работает этот тестовый код Jasmine?

it('should fire a "grew" event when the file grew in size', function(done) { 
    var path = '/var/tmp/filesizewatcher.test'; 
    exec('rm -f ' + path + ' ; touch ' + path, function() { 
     watcher = new FilesizeWatcher(path); 
     watcher.on('grew', function(gain) { 
      expect(gain).toBe(5); 
      done(); 
     }); 
     exec('echo "test" > ' + path, function() {}); 
    }); 
}); 

Я понимаю, что мы должны вызвать done() сказать жасмин событие действительно выстрелил и выполнить обратный вызов зарегистрирован it()

То, что я не понимаю, как это , что кода достигается, когда exec заявления необходимо, чтобы вызвать Бодрствующий grew события внутри другой функции обратного вызова, которая зависит от done времени выполнения д. Я попытался переместить exec вне внутреннего обратного вызова и время проверки, я не понимаю, почему. Разве мы не нуждаемся в том, чтобы эта часть была синхронной для чего-то, что действительно могло начаться?

Помогите мне освободить свой разум от его процедурных кандалов! Я так смущен, что мой вопрос кажется смутным даже для меня.

ответ

0

ОК У меня было все это в обратном направлении, я был смущен объяснением автора.

Жасмин использует expect и подходит для оценки того, проходит ли тест, и поэтому он заканчивается. Тестирование асинхронных функций, таких как излучатели событий, требует от нас, чтобы Жасмин знал, когда тест действительно закончился, следовательно, необходимо, чтобы done(). Обратный вызов Жасмина до it() в этом случае не требуется для стартует, но до заканчивается Выполнение спецификации.

От Жасмин docs:

И эта спецификация не будет завершена, пока его сделали называется.

По умолчанию жасмин будет ждать 5 секунд для асинхронной спецификации до до того, как произойдет сбой таймаута. Если истекает время ожидания до того, как вызывается , текущая спецификация будет отмечена как неудачная, а набор выполнение будет продолжаться, как если бы это было сделано.

+0

Привет, blackbird57: Вы когда-нибудь проходили все учебные занятия? У меня проблемы с миграцией. – Patricia

+0

@ MissLucy no Я этого не делал, я просто использовал то, что мне нужно, может быть, задал новый вопрос? – blackbird

Смежные вопросы