Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在jasmine中存根javascript依赖项(jquery)?_Javascript_Jquery_Testing_Jasmine - Fatal编程技术网

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

如何在jasmine中存根javascript依赖项(jquery)?,javascript,jquery,testing,jasmine,Javascript,Jquery,Testing,Jasmine,我手头有一些遗留代码,它们是使用/依赖以下堆栈编写的: jquery 1.8.1 jquery lazyload 1.8.0 D3V2 在我更改代码中的任何内容之前,我想我应该为它编写测试,这样我就什么也做不了了 我之所以选择了rspec,是因为我熟悉rspec 我遇到了一些问题,因为我想为其编写测试的代码依赖于jquery来定义一些“常量”,例如: 我想没有办法不打存根了 我是否应该在jasmine中包含jquery并尝试规范文档? 还是不在jasmine和存根中包含jquery$ 我

我手头有一些遗留代码,它们是使用/依赖以下堆栈编写的:

  • jquery 1.8.1
  • jquery lazyload 1.8.0
  • D3V2
在我更改代码中的任何内容之前,我想我应该为它编写测试,这样我就什么也做不了了

  • 我之所以选择了rspec,是因为我熟悉rspec
我遇到了一些问题,因为我想为其编写测试的代码依赖于jquery来定义一些“常量”,例如:

我想没有办法不打存根了

  • 我是否应该在jasmine中包含jquery并尝试规范文档?
  • 还是不在jasmine和存根中包含jquery
    $

  • 我担心我可能走错了方向,非常希望得到一些指导(非常感谢代码片段)。谢谢你帮了一个傻瓜

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

    spyOn($.fn, 'width').andReturn(300); //Return a value that you expect to be used
    
    Jasmine spies有一个属性
    calls
    ,它是所有调用的数组,我做的一件事是检查调用条目,您可以检查调用对象。作为jQuery对象,它有一个属性
    选择器
    ,您可以期望它与
    文档

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

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

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

    spyOn($.fn, 'width').andReturn(300); //Return a value that you expect to be used
    
    Jasmine spies有一个属性
    calls
    ,它是所有调用的数组,我做的一件事是检查调用条目,您可以检查调用对象。作为jQuery对象,它有一个属性
    选择器
    ,您可以期望它与
    文档

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

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

    只是好奇:您有什么样的测试用例?你想测试什么?还没有测试。我对代码还不是很熟悉,大约是2000 LOC,如果我能创建一个测试覆盖率,我相信重构不会破坏行为,我会很高兴。在测试中,我可能会对dom元素属性/属性进行断言?你想测试什么?还没有测试。我对代码还不是很熟悉,大约是2000 LOC,如果我能创建一个测试覆盖率,我相信重构不会破坏行为,我会很高兴。在测试中,我可能会对dom元素属性/属性进行断言。