Жасмин: Какой самый простой способ определить собственный симпатичный принтер для объектов jQuery? - PullRequest
2 голосов
/ 13 декабря 2011

Таким образом, симпатичный принтер по умолчанию для значений jQuery в jasmine не очень хорош (он печатает его как объект, перечисляя все доступные методы). Было бы намного приятнее, если бы он просто напечатал его в виде массива.

Я мог бы переопределить jasmine.PrettyPrinter.prototype.format, чтобы дать конкретные инструкции в случае value instanceof jQuery, или переопределить jasmine.isArray_, чтобы вернуть true для объектов jQuery, но оба они выглядят как хаки.

Есть ли более естественный способ расширения жасминового принтера?

Ответы [ 2 ]

1 голос
/ 28 мая 2015

@ Решение Джеймса Дебора - правильная идея, но мне пришлось несколько изменить его, чтобы заставить его работать:

jQuery.fn.jasmineToString = function() {
  this[0].outerHTML;
};

this - это объект jQuery;[0] дает вам первый элемент DOM (поскольку объекты jQuery являются коллекциями совпадающих элементов), а свойство DOM равно outerHTML (обратите внимание на заглавные буквы).

(есть хороший шанс, что @James определилего собственная функция jQuery.outerHtml (). См. этот вопрос StackOverflow для получения дополнительной информации).

0 голосов
/ 10 января 2013

jasmine.pp будет искать метод 'jasmineToString', который будет определен для объекта.

Я расширил свой объект jQuery следующим образом:

jQuery.fn.jasmineToString = function() {
  return this.outerHtml();
};
...