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