2013-04-22 40 views
1

我有与在下面的堆栈/写依赖于我手中的一些遗留代码:如何在jasmine中存根javascript依赖关系(jquery)?

  • 的jQuery 1.8.1
  • 的jquery lazyload 1.8.0
  • D3 V2

在我改变代码之前,我想我会为它编写测试,所以我可以不做任何刹车:)。

我遇到一些问题,因为代码我想要依靠的jQuery定义一些“常量编写测试“例如:

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

我想没有办法解决残留问题。

  1. 我应该在jasmine中包含jquery和试试看spec文档吗?
  2. 还是不包括jquery中的jasmine和stub $

我担心我可能会走向错误的方向,并会非常感谢一些指导(代码片段非常感谢)。感谢您帮助noob out!

+0

只是好奇:你有什么样的测试案例?例如。你想要测试什么? – jsalonen 2013-04-22 12:19:33

+1

还没有测试。我对代码还不是很熟悉,大约是2000 LOC,如果能够创建测试覆盖范围,我相信重构不会打破行为,我会很高兴。在测试中,我可能会对dom元素属性/属性进行断言。 – wpp 2013-04-22 12:38:36

回答

1

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

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

茉莉花间谍有一个属性calls那就是我已经做了所有的呼叫,一件事的数组是检查电话条目,您可以检查调用对象。这是一个jQuery对象有哪些,你可以期望等于document

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

虽然记得你正试图测试代码的预期的行为,而不是代码的每个步骤完成的财产selector这个已经写完了。试图测试存在的某些行会阻止您轻松重构。