【问题标题】:zombie.js visit() calling back too early (using browserify)过早的zombie.js visit() 回调(使用browserify)
【发布时间】:2011-11-25 22:41:27
【问题描述】:
我使用zombie 测试主干应用程序,当我使用zombie.visit 时,zombie 在页面上的所有脚本加载之前调用誓言回调,因此我的主干应用程序没有加载。但是,如果我等待“完成”事件,即browser.on 'done', @callback,那么我的主干应用程序会在调用回调之前加载。
是否要让访问函数仅在收到“完成”事件后回调?
PS 我使用 browserify 加载相当大的脚本,包括主干/下划线/jquery 和其他 jquery 插件
【问题讨论】:
标签:
backbone.js
zombie.js
【解决方案1】:
我遇到了同样的事情,但奇怪的是,我使用了你的一些其他建议来使用“完成”来找出一种等待文档完全加载的方法(包括任何从 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 动态编译的 node .ejs 文件;但这很可能适用于您想用僵尸测试的任何动态注入页面。
在我看来,这看起来像是一种反模式,如果作者纠正我或发布替代方案,我会很高兴。但是,这是一种解决方法。