2016-01-19 3 views
2

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

В блоке beforeAll я вызываю адаптер, который я написал для своего API, который очищает любые данные, загружает указанный файл данных семян и затем выполняет обратный вызов, переданный из тестового файла транспортира.

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

Может ли кто-нибудь предложить способ, которым я могу убедиться, что мой API был успешно посеян до начала тестов?

Спасибо!

+0

Если вам нужны ваши данные семян перед тем, как что-либо произойдет (запуск любых тестов), просто выполните синхронизацию xhr (вместо async I asume). – topheman

ответ

3

Если вы используете Jasmine 2.1 или выше с помощью Protractor, вы можете использовать функцию done() в своем beforeAll.

Так что, если у вас есть функция под названием seedMyDataAsync(), которая принимает функцию обратного вызова в качестве параметра, вы могли бы сделать что-то же просто, как это:

beforeAll(function(done) { 
    seedMyDataAsync(done); 
}); 

done() функция была введена с жасмином 2.0, но не было доступно для beforeAll() до Жасмин 2.1.

Из документации:

призывает к beforeAll, Afterall, beforeEach, afterEach, и он может принимать опциональный один аргумент, который должен быть вызван, когда асинхронная работа завершена.

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

+0

Замечательно, спасибо! – biagidp

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