由于我两次尝试将消息发布到JSpec Google Group显然都失败了,所以我在这里发帖。
我在使用JSpec时遇到问题,显然进入了带有某种测试的无限递归循环(如下)。有任何想法吗?我的代码有问题还是 JSpec 有问题?我正在通过 Ruby Gem 运行 JSpec 2.11.2。
错误是“RangeError:超出最大调用堆栈大小。” (Safari)和“内部错误:递归过多”(FF/Mac)。我可以使用 Firebug 控制台将项目添加到房间,没有错误。
要重现该问题,请使用“jspec init test”创建模板 jspec 项目。然后像这样编辑以下文件:
你的lib.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;
};
规范核心.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