1

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

  • jQuery 1.8.1
  • jQuery 延迟加载 1.8.0
  • d3 v2

在我更改代码中的任何内容之前,我想我会为它编写测试,所以我什么也做不了:)。

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

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

我想没有办法绕过存根。

  1. 我应该在 jasmine 中包含 jquery 并尝试指定文档吗?
  2. 或者不在 jasmine 和stub$中包含 jquery ?

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

4

1 回答 1

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);

尽管请记住您正在尝试测试代码的预期行为,但并不是代码的每一步都在编写时完成。尝试测试某些行是否存在将阻止您轻松重构。

于 2013-10-08T13:37:53.983 回答