Với hai lần thử nhận tin nhắn được đăng lên JSpec Google Group có vẻ không thành công, tôi sẽ đăng bài ở đây thay thế.JSpec - RangeError: Kích thước ngăn xếp cuộc gọi tối đa vượt quá
Tôi đang gặp sự cố với JSpec dường như đi vào vòng lặp đệ quy vô hạn với một loại thử nghiệm nhất định (bên dưới). Bất kỳ ý tưởng? Nó có cái gì sai với mã của tôi hoặc là nó JSpec? Tôi đang chạy JSpec 2.11.2 thông qua Ruby Gem.
Lỗi là 'RangeError: Kích thước ngăn xếp cuộc gọi tối đa đã vượt quá.' (Safari) và 'InternalError: quá nhiều đệ quy' (FF/Mac). Tôi có thể thêm một mục vào một phòng bằng cách sử dụng giao diện điều khiển Firebug, không có lỗi.
Để tái tạo sự cố, hãy tạo dự án mẫu jspec bằng 'jspec init test'. Sau đó chỉnh sửa các tập tin sau như vậy:
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
Chưa bao giờ nghe nói về JSpec trước. Rất tiếc: (Hầu như tất cả mã của bạn dường như đủ đơn giản để không làm bất cứ điều gì phát điên, ngoại trừ có lẽ "item.room = this;" – Tei