JsTestDriver: ожидаемый [объект] был {....}

Я использую JsTestDriver для тестирования и разработки чего-то в Javascript.

У меня периодически возникает такая ошибка AssertError:

 expected [object] but was {...}

Иногда это может быть:

 expected [object] but was [object]

И, наконец, это также может быть:

 expected {x=1,...} but was {x=2,...}

Итак, я пришел к выводу, что [объект] будет "экземпляром" объекта, который я создал с ключевым словом "новый". Коллекция, которая представляет каждое свойство объекта, может быть скопированной версией исходного объекта.

Если это так, значит ли это, что когда я нахожусь в такой ситуации:

function() {
    ...
    var obj1 = fctThatReturnsAnObject();
    obj2.addChild(obj1);
    ...
};

поскольку obj1 является переменной внутри области действия функции, она будет делать копию коллекции исходного объекта?

Если это так, есть ли способ получить объект по ссылке, а не сделать его коллекционную копию?

Спасибо!

PS: расширение этого вопроса будет следующим: как изменить "[объект]" для получения более полезной информации?

1 ответ

Решение, которое я придумал, заключается в следующем:

Сначала я изменил obj.prototype.toString = function() {}, чтобы он возвращал строку, которая показала важную информацию. Но когда вы запускаете тест, assertSame("...", obj1, obj2), по-видимому, не использует функцию toString, когда 2 [объект] не совпадают.

Итак, следующая лучшая вещь, о которой я могу подумать: это добавить --captureConsole, когда мы запускаем тесты, и console.log(obj1) и console.log(obj2), чтобы понять, что это за объект.

 java -jar JsTestDriver --captureConsole --tests all 
Другие вопросы по тегам