new JSDOM()
调用
jest-environment-jsdom
时,使用了JSDOM的隐式全局实例。然而,传入的所有对象都是由本地实例生成的。这是 JSDOM 不允许的——请参阅关于此问题的讨论。因此,实际上,问题不在于参数不是
new MutationObserver()
,而在于它是来自错误 DOM 的 Node
。要解决此问题,请确保所使用的 Node
来自与 DOM 节点相同的 JSDOM 实例。这可以通过将 MutationObserver
替换为
new MutationObserver()
来实现。这样做的缺点是你现在必须传递 JSDOM(或者至少是它的 new dom.window.MutationObserver()
)。或者,您可以在任何地方使用全局实例并通过其他方法设置其 HTML(例如 window
或
document.write()
)。不过,其可行性将取决于确切的用例。