javascript库的单元测试动态加载

javascript库的单元测试动态加载,javascript,unit-testing,jasmine,Javascript,Unit Testing,Jasmine,我正在用Jasmine为一个方法编写JavaScript测试,如果jQuery不存在,或者加载的版本是插件需要的早期版本,那么该方法将动态加载jQuery。我们需要测试几个不同的场景 没有图书馆 存在早期版本,因此已升级 已指定新版本(选项) 等 问题是测试将jQuery的一个版本添加到页面中,因此这会影响/干扰以后的测试。有没有办法重新加载页面或删除添加的javascript 解决方案 我找到了一个测试的工作环境。检查是否加载了JQuery的代码是: if(typeof jQuery ==

我正在用Jasmine为一个方法编写JavaScript测试,如果jQuery不存在,或者加载的版本是插件需要的早期版本,那么该方法将动态加载jQuery。我们需要测试几个不同的场景

  • 没有图书馆
  • 存在早期版本,因此已升级
  • 已指定新版本(选项)
问题是测试将jQuery的一个版本添加到页面中,因此这会影响/干扰以后的测试。有没有办法重新加载页面或删除添加的javascript

解决方案

我找到了一个测试的工作环境。检查是否加载了JQuery的代码是:

if(typeof jQuery == 'undefined'){ [load JQuery]; }
在茉莉花
每种
方法之后:

jQuery = undefined;

它实际上并没有删除动态加载的库,但被测试的方法没有看到它。

如何“加载jquery”?您是否加载文件内容并自行评估?在不同于浏览器窗口的上下文中对其进行评估是否可以接受?也许我错过了阅读您的问题,但是,如果jQuery在测试中没有得到正确的管理/名称空间,您不会担心在生产中也会出现全局污染吗?jQuery通常不是加载到它自己的名称空间jQuery(在页面中)中吗。方法是加载较新版本(如果已加载)或加载不存在的版本。该方法的行为就是模仿这种行为。它没有比正常情况下更严重的污染(它加载了.noConflict())。