2014-03-13 76 views
2

讓我們直指點。Zombie/Mocha browser.wait(...)方法不會執行。

下面是一段代碼,我使用的,因爲我檢查Welcomexxx應測試Web應用程序(這在目前只顯示<p>Welcome!</p>

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

describe('home page', function() { 
    var browser, server; 

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

    it('should show welcome', function(done) { 

    // Wait until page is loaded 
     function pageLoaded(window) { 
      console.log('4'); 
      return window.document.querySelector(".container"); 
     } 
     console.log('1'); 
     browser.visit("/"); 
     console.log('2'); 
     browser.wait(pageLoaded, function() { 
      console.log('3'); 
      assert.ok(browser.success); 
      assert.equal(browser.text('p'), 'Welcomexxx!'); 
      console.log(browser.html()); 
     }); 
     done(); 
    }); 

    after(function(done) { 
     server.close(done); 
    }); 
}); 

這個測試不應該通過!不歡迎!。然而無論我測試什麼,它總是通過。 正如您所看到的,我在代碼中添加了一些控制檯輸出以查看發生了什麼。令我驚訝的是控制檯中沒有顯示3和4。這基本上意味着等待功能不會執行。

這裏是無故障測試的預期輸出:

home page 
✓ should show welcome 
GET/200 5ms - 15b 
1 passing (63ms) 

,這是我對上面的測試輸出:

home page 
1 
Zombie: Opened window http://localhost:3000/ //zombie debug line 
2 
✓ should show welcome 
1 passing (22ms) 

,你可以看到裏面還有沒有「得到「在輸出中的聲明。另外殭屍似乎一般工作,因爲browser.visit顯示控制檯輸出指示發生了什麼事情。

任何人都可以闡明爲什麼發生這種情況?我有能力運行與領班開始或節點應用程序的應用程序,我可以在我的瀏覽器中看到,一切工作正常(理論上)。

+0

你有沒有這個運氣?我看到完全相同的問題。 – Martin

回答

3

在我看來,在調用完成()應該在回調處理程序browser.wait()

it('should show welcome', function(done){ 
    .... 
    browser.wait(pageLoaded, function(){ 
    ... 
    assert(...); 
    done(); 
    }); 
}); 
1

你必須處理與回調函數或像下面的例子承諾殭屍:

browser.visit("/").then(function(){ 
    assert.ok(browser.success); 
    assert.equal(browser.text('p'), 'Welcomexxx!'); 
    console.log(browser.html()); 
}).then(done, done); 
+0

沒錯。我不認爲你必須等待.container加載。 (done()也可以在console.log()之後調用) –

相關問題