Как использовать жасмин для проверки асинхронной функции, которая требует много времени для ответа?
используя функцию для извлечения данных из webapi. В основном используя .I '$.ajax
м сейчас тестирую сwaits()
как это:
describe('xxxxxxxxxxxxxxxxxxxxx', function () {
var r;
it('fetchFilter', function () {
runs(function () {
model.fetch(opts)
.done(function(data) {
r = data;
});
});
waits(2000);
runs(function () {
expect(r[0].gender).toBeDefined();
});
});
});
Проблема в:
Это'не гарантируется, чтоwaits(2000)
сделает работу хорошо. По разным причинам (сетевые подключения, эффективность алгоритма самого приложения и т. Д.) Мне может потребоватьсяwaits(5000)
или больше, или для некоторых моделейwaits(500)
достаточно. И самое неприятное, что этовсе вышло из-под контроля.Многоwaits()
заставляет тестовые спецификации тратить много времени на ожидание. Время запуска всего набора слишком велико, чтобы его принять.Есть ли некоторыеbest practice
делать там такие вещи?
PS: я знаю, что модульный тест не должен применяться к какой-либо функции, которая использует webapi или базу данных. Но я'я работаю с одностраничным js-heavy-webapp. Процесс извлечения данных так же важен, как и то, как я буду использовать их с моделями js.