Я не хочу читать код в течение нескольких часов, чтобы найти соответствующую часть, но мне любопытно, как жасмин выполняет свои часы. Интересно, что он может протестировать асинхронный код с кодом проверки синхронизации. AFAIK, с текущим node.js, который поддерживает ES5, это невозможно (асинхронные функции определены в ES7). Разбирает ли он код js с чем-то вроде estraverse и строит асинхронный тест из синхронизации?Как работают часы жасмина?
Просто пример того, что я говорю:
it("can test async code with sync testing code", function() {
jasmine.clock().install();
var i = 0;
var asyncIncrease = function() {
setTimeout(function() {
++i;
}, 1);
};
expect(i).toBe(0);
asyncIncrease();
expect(i).toBe(0);
jasmine.clock().tick(2);
expect(i).toBe(1);
jasmine.clock().uninstall();
});
В данном случае expect(i).toBe(1);
должен быть в функции обратного вызова.
Так что это не будет работать с помощью реального асинхронного кода, например. по db-соединению? – inf3rno
@ inf3rno Для ajax вы хотели бы либо высмеять вызов ajax (предположим, что сервер работает), либо для тестов интеграции, фактически пусть это будет асинхронно. – m59
Хорошо. Я работаю над системой async для ES5, поэтому я спросил. Благодаря! :-) – inf3rno