zombie.js visit()过早回电(使用browserify)

时间:2011-09-27 10:53:17

标签: backbone.js zombie.js

我使用zombie测试骨干应用程序,当我使用zombie.visit时,zombie在加载页面上的所有脚本之前调用vows回调,因此我的主干应用程序未加载。但是,如果我等待'完成'事件,即browser.on 'done', @callback,那么我的骨干应用程序会在调用回调之前加载。

无论如何,只有在收到'done'事件后才能使访问功能回调?

PS我使用browserify加载相当大的脚本,包括骨干/下划线/ jquery和其他jquery插件

1 个答案:

答案 0 :(得分:0)

我遇到了同样的事情,但奇怪的是,我使用了一些其他建议来使用'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,我的应用程序正在使用express.js正在编译的节点.ejs文件;但这可能适用于您想要使用僵尸进行测试的任何动态注入的页面。

在我看来,这看起来像一个反模式,如果作者要么纠正我或发布替代方案,我会很高兴。但是,这是一种解决方法。