JsTestDriver: ожидаемый [объект] был {....} - PullRequest
0 голосов
/ 11 февраля 2012

Я использую 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 является переменной внутри области действия функции, он будет делать копию коллекции исходного объекта?

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

Спасибо!

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

1 Ответ

0 голосов
/ 12 февраля 2012

Решение, которое я придумал, таково:

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

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

 java -jar JsTestDriver --captureConsole --tests all 
...