Node.js 为什么zombie.js浏览器在使用引导时返回空HTML?

Node.js 为什么zombie.js浏览器在使用引导时返回空HTML?,node.js,express,mocha.js,zombie.js,Node.js,Express,Mocha.js,Zombie.js,我正在尝试使用Mocha和Zombie测试Node.js/Express.js应用程序。我可以通过简单的测试,但只要我将Twitter引导的脚本标记添加到我的视图中,browser对象就会返回空HTML 以下是我的测试代码: process.env.NODE_ENV = 'test'; var app = require('../app'); var assert = require('assert'); var Browser = require('zombie'); describe('

我正在尝试使用Mocha和Zombie测试Node.js/Express.js应用程序。我可以通过简单的测试,但只要我将Twitter引导的脚本标记添加到我的视图中,browser对象就会返回空HTML

以下是我的测试代码:

process.env.NODE_ENV = 'test';

var app = require('../app');
var assert = require('assert');
var Browser = require('zombie');

describe('home page', function() {
before(function() {
    this.server = app.listen(3000);
    this.browser = new Browser({site: 'http://localhost:3000', debug : true});
});

it('should show welcome', function(done) {
    var browser = this.browser;
    browser
        .visit("/")
        .then(function() {
            console.log(browser.html());
        })
        .fail(function(error) {
            console.log("Error: ", error);
        })
        .then(done);
});

after(function(done) {
    this.server.close(done);
});
});
视图代码(my layout.jade文件):

如果我删除脚本标记,HTML将按预期记录到控制台。否则,返回空HTML

调试输出:

home page
◦ should show welcome: Zombie: Opened window http://localhost:3000/ 
GET / 200 283ms - 1018b
Zombie: GET http://localhost:3000/ => 200
Zombie: Loaded document http://localhost:3000/
GET /javascripts/bootstrap.min.js 200 4ms - 27.08kb
Zombie: GET http://localhost:3000/javascripts/jquery-2.0.3.min.js => 200
Zombie: GET http://localhost:3000/javascripts/bootstrap.min.js => 200
GET /javascripts/jquery-2.0.3.min.js 200 41ms - 81.65kb
<html></html>
Zombie: Event loop is empty
✓ should show welcome (414ms)

我现在必须重写一下测试逻辑,但让它工作的关键是等待功能。

听起来时间可能是个问题。另一方面,Zombie非常适合在使用visit时JavaScript事件停止后才让您进行控制

一个好的策略是使用
浏览器。在继续测试之前,等待某个DOM元素出现。这样您就知道,例如,引导程序已加载并显示元素
#小部件视图

可能还需要调整
maxWait
/
waitFor


至少那时你可以排除时间问题。

效果很好!我将编辑我的帖子以显示更新的测试代码。谢谢
home page
◦ should show welcome: Zombie: Opened window http://localhost:3000/ 
GET / 200 283ms - 1018b
Zombie: GET http://localhost:3000/ => 200
Zombie: Loaded document http://localhost:3000/
GET /javascripts/bootstrap.min.js 200 4ms - 27.08kb
Zombie: GET http://localhost:3000/javascripts/jquery-2.0.3.min.js => 200
Zombie: GET http://localhost:3000/javascripts/bootstrap.min.js => 200
GET /javascripts/jquery-2.0.3.min.js 200 41ms - 81.65kb
<html></html>
Zombie: Event loop is empty
✓ should show welcome (414ms)
it('should show welcome', function(done) {

    // Wait until page is loaded
    function pageLoaded(window) {
        return window.document.querySelector(".container");
    }

    var browser = this.browser;
    browser.visit("/");
    browser.wait(pageLoaded, function() {
        console.log(browser.html());
    });
    done();
});