@testing-library/dom window.getComputedStyle "Not implemented" 即使在设置 computedStyleSupportsPseudoElements 之后仍会出错:true

@testing-library/dom window.getComputedStyle "Not implemented" error even after setting computedStyleSupportsPseudoElements: true

我正在使用 jest 来测试实现 React embla 轮播的自定义模块。

我收到一个与 jsdom 相关的错误,该错误缺少 window.getComputedStyle(elt, pseudoElt)

的实现
Error: Not implemented: window.computedStyle(elt, pseudoElt)

经过一番搜索后,我发现 jsdom 不支持第二个参数,@testing-library 的好人有一个选项可以做……一些……关于它的事情。

参考

https://testing-library.com/docs/dom-testing-library/api-configuration#computedstylesupportspseudoelements

开玩笑-setup.js:

import { configure } from '@testing-library/dom';
configure({
  computedStyleSupportsPseudoElements: true
})
import '@testing-library/jest-dom';

不幸的是,这似乎无法解决我的错误。我知道正在应用配置,因为我设置了一些其他配置选项,这些选项破坏了我的所有测试。

我是不是没有正确应用某些东西,或者是否有其他潜在的解决方法?我在测试中不需要轮播的全部功能我只是想确保我传递给视图的数据被正确呈现。

我在将 Jest 更新到最新版本 (26.6.3) 时遇到了同样的错误。 embla-carousel 代码中的 Calling getComputedStyle as a window property 对我造成了这个问题:

const pseudoString = window.getComputedStyle(node, ':before').content

我也试过使用@testing-library/dom解决这个问题,但没有成功。但是当我删除 window 并直接调用 getComputedStyle 时,问题就消失了:

const pseudoString = getComputedStyle(node, ':before').content

我已针对此问题发布 embla-carousel v4.4.1 which includes a fix。请安装此版本,问题应该会消失。