Jasmine:为jQuery对象定义自定义漂亮打印机的最简单方法是什么?

时间:2011-12-13 14:43:49

标签: javascript jquery testing jasmine jasmine-jquery

因此,jasmine中jQuery值的默认漂亮打印机不是很漂亮(它将其打印为对象,列出了所有可用的方法)。如果它只是将它打印成阵列,它会更好。

我可以覆盖jasmine.PrettyPrinter.prototype.format以便在value instanceof jQuery或覆盖jasmine.isArray_的情况下给出具体说明,以便为jQuery对象返回true,但这两者看起来都像黑客一样。

是否有更自然的方式来扩展茉莉漂亮的打印机?

2 个答案:

答案 0 :(得分:1)

@James deBoer解决方案是正确的想法,但我必须稍微修改它以使其工作:

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

this是jQuery对象; [0]为您提供第一个DOM元素(因为jQuery对象是匹配元素的集合),DOM属性是outerHTML(注意大小写)。

(@James很有可能定义了自己的jQuery.outerHtml()函数。有关更多信息,请参阅this StackOverflow question

答案 1 :(得分:0)

jasmine.pp将查找要在对象上定义的方法'jasmineToString'。

我像这样扩展了我的jQuery对象:

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