如何在jasmine中存根javascript依赖(jquery)?

时间:2013-04-22 12:15:31

标签: javascript jquery testing jasmine

我手上有一些遗留代码,用/依赖于以下堆栈编写:

  • jquery 1.8.1
  • jquery lazyload 1.8.0
  • d3 v2

在我更改代码中的任何内容之前,我认为我为它编写测试,所以我可以不做任何刹车:)。

我遇到了一些问题,因为代码我想编写测试依赖于jquery 来定义一些“常量”,例如:

var WIDTH = $(document).width();

我想没有办法解决问题。

  1. 我应该在jasmine中包含jquery吗?尝试规范文档?
  2. 或者不包含茉莉花中的jquery和存根$
  3. 我担心我可能会走错方向并且非常欣赏一些指导(非常感谢代码片段)。谢谢你帮助一个菜鸟!

1 个答案:

答案 0 :(得分:1)

我会包含jQuery并模拟它调用的函数。在你的例子中,我会这样做。

spyOn($.fn, 'width').andReturn(300); //Return a value that you expect to be used

Jasmine间谍有一个属性calls,它是所有调用的数组,我所做的一件事是检查调用条目,你可以检查调用对象。这是一个jQuery对象,它具有属性selector,您可以期望它等于document

expect($.fn.width.calls[0].object.selector).toEqual(document);

虽然记得您正在尝试测试代码的预期行为,但并不是代码的每一步都在编写时完成。试图测试某些行存在会阻止您轻松重构。