Отказ от ответственности: я также не слышал о JSpec раньше (хотя Жасмин - хорошая альтернатива, если вы ищете один.
Единственное, о чем я могу думать, это как работает функция «быть». Если он перемещается по графу объектов, чтобы определить, равны ли два элемента, то это может привести к циклическому сбоям в зависимости: т.е. вы ссылаетесь на свою комнату в каждом элементе, который, в свою очередь, содержит ваши элементы, которые, в свою очередь, содержат ваши комнаты и так далее и так далее. Это заканчивается бесконечным циклом, из которого функция be не может вернуться эффективно, заполняя стек, и, таким образом, выдает ошибку, которую вы видите.
Примерно так (без сравнения, также: не тестировал и не запускал этот код, возьмите его в качестве псевдокода для пояснения приведенного выше абзаца):
function be(obj) {
for (var key in obj) {
if (typeof(obj[key]) === "object") {
be(obj[key]); // If you have circular dependencies, the recursion never ends
}
}
}