我使用zombie测试骨干应用程序,当我使用zombie.visit时,zombie在加载页面上的所有脚本之前调用vows回调,因此我的主干应用程序未加载。但是,如果我等待'完成'事件,即browser.on 'done', @callback
,那么我的骨干应用程序会在调用回调之前加载。
无论如何,只有在收到'done'事件后才能使访问功能回调?
PS我使用browserify加载相当大的脚本,包括骨干/下划线/ jquery和其他jquery插件
答案 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文件;但这可能适用于您想要使用僵尸进行测试的任何动态注入的页面。
在我看来,这看起来像一个反模式,如果作者要么纠正我或发布替代方案,我会很高兴。但是,这是一种解决方法。