Вопрос по jasmine
Запости код
beforeEach ->
waitsForPromise ->
atom.packages.activatePackage "bracket-matcher"
_ = require('underscore-plus')
_.defer -> console.log 'defer'
_.delay -> console.log 'delay', 100
setTimeout -> console.log 'timeout',100)
waitsFor ->
console.log 'waitsFor'
true
, "Msg", 1000
Ничего кроме waitsFor не работает.
Проблема в модуле типа как brackets, который defer вызывает.
Как же люди тестируют, когда есть таймауты в инициализации.
Открой код _.defer, вставь там console.log(setTimeout). Ты поймешь, какой вообще setTimeout вызывается, родной или фейковый. Также открой имплементацию фейкового setTimeout, там тоже вставь console.log, чтобы понять вызывается она или нет.
Подожди, а замена на фейковый таймаут - ты имеешь в виду jasmine.clock? Где он у тебя вызывается? waitsFor вроде работает с родным асинхронным setTimeout и проверяет условие, пока либо оно не выполнится, либо не истечет время.
т.е. схема
jasmine.Clock.useMock
jasmine.Clock.tick(100)
не работает для setTimeout
Т.е. или я не правильно клок запускаю или там баг - хз. Меня в целом устраивает родной клок, поэтому не буду разбираться.
Оставить комментарий
Papazyan
Кто-нибудь с ним работал? Не могу понять почему _.defer не работает в beforeEach, когда еще jasmine не заменил setTimeout на фейковый. Ну и потом если восстановить таймаут, все равно только новый defer работает, старый вообще никогда не вызывается.