我的兩次嘗試將消息發佈到JSpec Google Group明顯失敗,我在這裏發佈。JSpec - RangeError:超過最大調用堆棧大小
我在JSpec上遇到了麻煩,顯然是通過某種測試(下面)進入無限遞歸循環。有任何想法嗎?有沒有我的代碼有問題,還是JSpec?我正在通過Ruby Gem運行JSpec 2.11.2。
錯誤是'RangeError:超出最大調用堆棧大小。' (Safari)和'InternalError:太多遞歸'(FF/Mac)。我可以使用Firebug控制檯添加一個項目到一個房間,沒有任何錯誤。
要重現該問題,請使用'jspec init test'創建一個模板jspec項目。然後編輯以下文件,像這樣:
yourlib.core.js
var Game = {};
Game.item = function() {
var result = {
name : 'Undefined',
room : null
}
return result;
};
Game.room = function() {
var result = {
items : [],
addItem : function (name) {
var item = Game.item();
item.name = name;
item.room = this;
this.items.push(item);
return item;
}
};
return result;
};
spec.core.js
describe 'Room'
before_each
room = Game.room()
end
describe 'addItem()'
before_each
potion = room.addItem('Potion')
key = room.addItem('Key')
end
//this is fine
it 'should return two different items'
key.should_not.be potion
end
//InternalError: too much recursion
it 'should not give recursion error'
key.should.be potion
end
end
end
從來沒有聽說過JSpec之前。對不起:(幾乎所有的代碼看起來很簡單,不會讓任何事情變得瘋狂,除了「item.room = this;」 – Tei