Вопрос по jasmine

Papazyan

Кто-нибудь с ним работал? Не могу понять почему _.defer не работает в beforeEach, когда еще jasmine не заменил setTimeout на фейковый. Ну и потом если восстановить таймаут, все равно только новый defer работает, старый вообще никогда не вызывается.

luna89

Запости код

Papazyan

Скорее это с атомом связано. Он сука как-то чистит все таймауты. Абсолютно ничего не работает если в beforeEach писать

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 не работает.

Papazyan

Проблема в модуле типа как brackets, который defer вызывает.

Papazyan

Вставил jasmine.unspy(window, 'setTimeout') в сам waitForPromises и оно заработало, хотя все равно через жопу.
Как же люди тестируют, когда есть таймауты в инициализации.

luna89

Открой код _.defer, вставь там console.log(setTimeout). Ты поймешь, какой вообще setTimeout вызывается, родной или фейковый. Также открой имплементацию фейкового setTimeout, там тоже вставь console.log, чтобы понять вызывается она или нет.

luna89

Подожди, а замена на фейковый таймаут - ты имеешь в виду jasmine.clock? Где он у тебя вызывается? waitsFor вроде работает с родным асинхронным setTimeout и проверяет условие, пока либо оно не выполнится, либо не истечет время.

Papazyan

Суть в том, как я понимаю, что а) Атом (или жасмин) удаляет все таймауты в какой-то момент и заменяет на фейк. б) фейк не работает, по крайней мере мне не удалось его заставить работать. setInterval работает, а setTimeout нет. с) В атоме какой-то старый жасмин.
т.е. схема
jasmine.Clock.useMock
jasmine.Clock.tick(100)
не работает для setTimeout
Т.е. или я не правильно клок запускаю или там баг - хз. Меня в целом устраивает родной клок, поэтому не буду разбираться.
Оставить комментарий
Имя или ник:
Комментарий: