首页 > 解决方案 > 是什么导致此 Stencil.js Jest 测试中的“assignedElements 不是函数”?

问题描述

我在 Jest 测试用例中收到错误消息assignedElements is not a function。在代码中,我尝试查询插槽,然后获取如下所述的值:

let slot = this.element.shadowRoot?.querySelector('slot');
const testItems = slot.assignedElements({flatten:true});

此代码在大多数浏览器上运行良好,但在 Jest 测试用例中失败。我想过嘲笑和监视这个 API,但也没有运气。

标签: jestjsstenciljs

解决方案


有些环境可能还slot.assignedElements没有,但是在上面进行 polyfill 非常容易slot.assignedNodes

if (!HTMLSlotElement.prototype.assignedElements) {
    HTMLSlotElement.prototype.assignedElements = function (...args) {
        return HTMLSlotElement.prototype.assignedNodes
            .apply(this, args)
            .filter((n) => n instanceof Element)
    }
}

推荐阅读