zombie.js visit() перезванивает слишком рано (используя browserify)
Я использую zombie для тестирования магистрального приложения, когда я использую zombie.visit, zombie вызывает функцию обратного вызова vows до загрузки всех скриптов на странице, поэтому мое магистральное приложение не загружается. Однако, если я буду ждать события "сделано", т.е. browser.on 'done', @callback
тогда мое базовое приложение загружается до вызова обратного вызова.
В любом случае, чтобы функция посещений вызывала обратный вызов только после получения события "сделано"?
PS Я использую browserify для загрузки довольно большого скрипта, включая backbone/underscore/jquery и другие плагины jquery
1 ответ
Я столкнулся с тем же самым, но, как ни странно, я использовал некоторые другие ваши предложения, чтобы использовать 'on done', чтобы выяснить способ ожидания полной загрузки документа (включая любые динамически внедренные из JS вещи!).
it('should have the correct title', function() {
browser.on('done', function(doc) {
console.log("DONE finally finito..");
//console.log(browser.html());
expect(doc.document.title).toMatch('.*Login');
expect(doc.document.title).not.toEqual('XXXXX');
asyncSpecDone();
});
browser.visit(LOGIN, function(err, doc) {
});
asyncSpecWait();
});
где LOGIN - это URL моей страницы входа. browser.html() распечатал всю страницу, и я увидел динамически вставленные элементы, как и ожидалось. FWIW, мое приложение использует файлы узла.ejs, которые express.js компилирует на лету; но это, вероятно, применимо к любой динамически внедренной странице, которую вы хотите протестировать с помощью зомби.
На мой взгляд, это выглядит как анти-шаблон, и мне бы очень хотелось, чтобы автор исправил меня или опубликовал альтернативу. Тем не менее, это обходной путь.