zombie.js visit () перезванивает слишком рано (используя browserify) - PullRequest
2 голосов
/ 27 сентября 2011

Я использую zombie для тестирования магистрального приложения, когда я использую zombie.visit, zombie вызывает обратный вызов vows до того, как все скрипты на странице загружены, поэтому мое магистральное приложение не загружается.Однако, если я жду события «done», то есть browser.on 'done', @callback, тогда мое базовое приложение загружается до вызова обратного вызова.

В любом случае, чтобы заставить функцию посещения выполнять обратный вызов только после получения события 'done'?

PS Я использую browserify для загрузки довольно большого скрипта, включая backbone / underscore / jquery и другие плагины jquery.

1 Ответ

0 голосов
/ 18 декабря 2011

Я столкнулся с тем же, но, как ни странно, я использовал некоторые другие ваши предложения, чтобы использовать '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 компилирует на лету; но это, вероятно, применимо к любой динамически внедренной странице, которую вы хотите протестировать с помощью зомби.

На мой взгляд, это выглядит как анти-паттерн, и я был бы рад, если бы автор исправил меня или опубликовал альтернативу. Однако это обходной путь.

...