【发布时间】:2020-04-28 19:24:30
【问题描述】:
我有一个反应组件ReactComponentContainer,它获取配置和shadowRoot。
import React from 'react';
import App from './App';
import ReactComponent from './ReactComponent';
const ReactComponentContainer = function({config, shadowRoot}) {
configme(shadowRoot.host || shadowRoot);
return (
<App renderRoot={shadowRoot}>
<ReactComponent/>
</App>
);
};
export default ReactComponentContainer;
在我的jest 测试文件中,我需要模拟一个shadow dom,所以我可以作为参数传递给ReactComponentContainer。
const header = document.createElement('header');
const shadowRoot = header.attachShadow({mode: 'open'});
shadowRoot.innerHTML = '<h1>Hello Shadow DOM</h1>';
import React from 'react';
import ReactComponentContainer from './ReactComponentContainer';
describe('ReactComponentContainer', () => {
beforeEach(() => {
setUp = (props) => {
return mount(<ReactComponentContainer {...props} />);
};
});
it('initailize ReactComponentContainer', () => {
// mock a shadow dom
const header = document.createElement('header');
// Error: attachShadow is undefined
const shadowRoot = header.attachShadow({mode: 'open'});
shadowRoot.innerHTML = '<h1>Hello Shadow DOM</h1>';
const props = {
config: {},
renderRoot: shadowRoot
};
const element = setUp(props);
});
});
我收到Error: attachShadow is undefined。我想是因为它只是浏览器。
我的问题:
如何模拟 shadow dom,以便在开玩笑测试中运行它?
【问题讨论】:
-
为什么在测试中尝试使用 shadow dom?
-
无论如何,实现 Shadow API 是 JSDOM 的责任。看起来可能是already supported,只需检查您在
package-lock.json中使用的版本(应该是at least 12.2.0)
标签: javascript reactjs jestjs shadow-dom jsdom