2011-09-27 39 views
2

我使用殭屍來測試骨幹應用程序,當我使用zombie.visit時,殭屍在頁面上的所有腳本加載之前調用誓言回調,所以我的骨幹應用程序未加載。但是,如果我等待「完成」事件,即browser.on 'done', @callback,那麼在調用回調之前,我的骨幹應用會被加載。zombie.js訪問()回調太早(使用browserify)

無論如何,只有在收到「完成」事件時纔將回訪函數返回給回調函數?

使用browserify加載相當大的腳本,包括骨幹/下劃線/ jQuery和其他jQuery插件PS林

回答

0

我跑以同樣的事情,但奇怪的是,我用了你的一些其他建議使用「上完成'找出一種方法來等待文檔完全加載(包括從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(); 
}); 

其中登錄是我的登錄頁面的URL。 browser.html()打印出整個頁面,我看到了動態插入的元素。 FWIW,我的應用程序正在使用express.js正在編譯的節點.ejs文件;但是這可能適用於任何想要使用殭屍測試的動態注入頁面。

在我看來,這看起來像一種反模式,如果作者要麼糾正我,要麼發佈替代品,我會愛上它。但是,這是一種解決方法。