Я тестирую некоторую логику сериализации и десериализации в довольно сложном приложении JavaScript, используя QUnit, но у меня возникают проблемы с передачей моих тестов.QUnit - как сравнить два сложных объекта
этих двух проверок, которые выглядят, как будто они должны делать правильные вещи являются deepEqual или propEqual, однако, ни кажется, делает именно то, что я хочу:
Если я использую deepEqual
и два объекта не совпадают, утверждение терпит неудачу, и это показывает мне разницу, указывающую на проблемы. Однако, если нет разницы, я просто получаю сообщение об ошибке, показывающее первый параметр, переданный на проверку равенства как «ожидаемое» значение без второго параметра или любое указание на то, что разница. Я думаю, что это возможно потому, что они не одни и те же объекты, но я не уверен.
Если я использую propEqual
, я просто получаю сообщение о том, что RangeError: Maximum call stack size exceeded at String.match (native)
и тест терпит неудачу.
Возможно ли выполнить этот тип чеков с помощью QUnit? Если да, то что я делаю неправильно?
Можете ли вы показать нам тестовый код и, возможно, объекты, которые вы сравниваете (или, может быть, только часть их)? – jakerella
Как примечание стороны, 'deepEqual' не требует, чтобы объекты были одним и тем же элементом в памяти, он разбивается на объект для сравнения отдельных свойств. – jakerella
@jakarella, честно говоря, я не могу поделиться деталями, так как вам понадобится около двух третей моего приложения, чтобы иметь возможность видеть все, что сериализуется и десериализоваться, а тест - это просто «var a = new myType(); var b = a.serialise(); var c = b.deserialise(); deepEqual (a, c); ' – glenatron