如何解决节点14.X上JEST中jQuery插件的文档为空
我在Node 14.15.0上的JSDOM环境中运行Jest,并且访问 document 任何属性的jQuery插件使测试失败,因为 document 始终为null他们。
(function($){
function FooBar(element,settings) {
return document.querySelector("div");
};
$.fn.foobar = function() {
var _ = this,opt = arguments[0],args = Array.prototype.slice.call(arguments,1),l = _.length,i,ret;
for (i = 0; i < l; i++) {
if (typeof opt == 'object' || typeof opt == 'undefined')
_[i].foobar = new FooBar(_[i],opt);
else
ret = _[i].foobar[opt].apply(_[i].foobar,args);
if (typeof ret != 'undefined') return ret;
}
return _;
};
})(jQuery);
以上示例将这样导入测试对象:
import "jquery";
import "PATH_TO_MODULES/foobar.js";
export default class SomeTestSubject {
constructor(private readonly $someObject: JQuery) {
$someObject.foobar();
}
这是setupFileAfterEnv,这里没什么幻想
import "core-js";
import "./__mocks__/RequestGuard";
import jQuery from "jquery";
global.jQuery = global.$ = jQuery;
// otherwise requestAnimationFrame cannot be awaited via flush-promises
global.requestAnimationFrame = cb => setImmediate(cb);
jest.setTimeout(70000);
jest.retryTimes(3)
//todo: remove when imports work
import "perfect-scrollbar/dist/perfect-scrollbar";
运行npm测试针对所描述的情况返回此错误消息:
LOCAL_PATH_TO_MODULE\foobar.js:5
return document.querySelector("div");
^
TypeError: Cannot read property 'querySelector' of null
当JSDOM应该在JEST中严格防止这种情况时,为什么此方案的文档为null?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。