大約4天后,我的大多數node.js項目的功能測試套件都失敗了,無論是在Linux上的CI還是在OS X上的本地上。不要認爲這是由於我的代碼庫有任何變化,因爲我可以回滾到git repo的早期狀態,並且看到過去通過的測試現在都失敗了。它在不同平臺上失敗的事實使我認爲這不太可能成爲特別的本地環境變化。'超過最大調用堆棧大小'使用zombie.js加載jQuery頁面
我懷疑這很可能是一個問題某處的依賴關係樹,並最有可能在通過zombie.js使用的封裝之一,因爲我的應用程序似乎仍正常工作。但是,當測試上次工作時,我沒有記錄樹中所有軟件包的版本。
我歸納爲以下測試案例:
so_test.js
"use strict";
var zombie = require('zombie');
var browser = zombie.create({ debug: true });
var assert = require('assert');
describe('Stack Overflow', function() {
it('should be alive', function(done) {
browser.visit('http://stackoverflow.com/')
.then(function() {
browser.dump();
assert.equal(browser.location.pathname, '/', 'It is not the SO home page.');
assert.ok(browser.success, 'It did not load successfully.');
})
.then(done, done);
});
});
其失敗對我來說,如下所示:如果我更改URL,以
$ mocha -R spec test/functional/stack_overflow.js
Stack Overflow
Zombie: Opened window http://stackoverflow.com/
Zombie: GET http://stackoverflow.com/ => 200
Zombie: Loaded document http://stackoverflow.com/
Zombie: GET http://cdn.sstatic.net/Js/stub.en.js?v=26cc3a09b135 => 200
Zombie: GET http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js => 200
Maximum call stack size exceeded undefined
$ is not defined ReferenceError: $ is not defined
at <anonymous>:1:8168
at Contextify.sandbox.run (/Users/nanoamp/src/p/node_modules/zombie/node_modules/jsdom/node_modules/contextify/lib/contextify.js:12:24)
at DOMWindow.window._evaluate (/Users/nanoamp/src/p/node_modules/zombie/lib/zombie/window.js:188:25)
at Object.HTML.languageProcessors.javascript (/Users/nanoamp/src/p/node_modules/zombie/lib/zombie/scripts.js:23:21)
at define.proto._eval (/Users/nanoamp/src/p/node_modules/zombie/node_modules/jsdom/lib/jsdom/level2/html.js:1480:47)
at loaded (/Users/nanoamp/src/p/node_modules/zombie/lib/zombie/scripts.js:74:23)
at /Users/nanoamp/src/p/node_modules/zombie/node_modules/jsdom/lib/jsdom/level2/html.js:76:20
at Object.item.check (/Users/nanoamp/src/p/node_modules/zombie/node_modules/jsdom/lib/jsdom/level2/html.js:345:11)
at Object.item.check (/Users/nanoamp/src/p/node_modules/zombie/node_modules/jsdom/lib/jsdom/level2/html.js:348:23)
at /Users/nanoamp/src/p/node_modules/zombie/node_modules/jsdom/lib/jsdom/level2/html.js:363:12
... similar deleted for brevity ...
Zombie: Event loop is empty
1) should be alive
0 passing (2s)
1 failing
1) Stack Overflow should be alive:
Maximum call stack size exceeded
www.google.com(不使用jQuery)它通過。如果我更改zombie.js爲2.0.0-alpha31(之前正在工作)和2.0.4之間的另一個版本,則沒有區別。在我原來的代碼中,我可以在1.7和1.11之間自由更改jQuery版本,而沒有任何好處。雖然jQuery似乎是一個觸發器,但我不知道它是否是特定於該庫的東西,或者僅僅是它深入DOM中的事實。
我也把測試用例放在Runnable上:http://runnable.com/VDf4OLzyU64cSSuz/zombie-js-test-loading-page-with-jquery-for-node-js-and-mocha(雖然在寫作的時候看起來有點片面)。
任何人都可以建議如何解決這個或失敗,如何更好地調查?