为javascript测试创建HTML元素

为javascript测试创建HTML元素,javascript,reactjs,testing,enzyme,Javascript,Reactjs,Testing,Enzyme,所以我有一个特别的问题,在我的react组件中,我使用了如下命令: document.getElementById('modalsContainer').appendChild(recognitionProfileZoom); document.getElementById('modalsContainer').appendChild(categoryZoom); 以及: 但是这些由ID指定的元素在我的组件中不存在。 如何在测试中创建这些对象 下面的代码将使用这些元素,但由于它们不存在而失败(

所以我有一个特别的问题,在我的react组件中,我使用了如下命令:

document.getElementById('modalsContainer').appendChild(recognitionProfileZoom);
document.getElementById('modalsContainer').appendChild(categoryZoom);
以及:

但是这些由ID指定的元素在我的组件中不存在。
如何在测试中创建这些对象

下面的代码将使用这些元素,但由于它们不存在而失败(hidemoal函数使用document.append from before

描述(“CaptureProfile模态函数测试”,函数(){
它('应该隐藏模态',函数(){
var包装器,实例;
包装=装载(
);
包装器设置状态({
showModal:对
});
instance=wrapper.component.getInstance();
instance.hideModal();
});

在酶测试中创建DOM元素:

伙计们,要在测试中创建DOM元素,实际上非常简单,您可以像在香草javascript中一样键入它,并使用全局关键字:

it('Should hide the modal', function() {
        var wrapper, instance;
        var modalsContainer = global.document.createElement('div');
        var recognitionProfileZoom = global.document.createElement('div');
        var categoryZoom = global.document.createElement('div');

        modalsContainer.id = 'modalsContainer';
        recognitionProfileZoom.id = 'recognitionProfileZoom';
        categoryZoom.id = 'categoryZoom';
        global.document.body.appendChild(modalsContainer);
        global.document.body.appendChild(recognitionProfileZoom);
        global.document.body.appendChild(categoryZoom);  

完成后,您可以期望值,并正常使用DOM元素。

在酶测试中创建DOM元素:

伙计们,要在测试中创建DOM元素,实际上非常简单,您可以像在香草javascript中一样键入它,并使用全局关键字:

it('Should hide the modal', function() {
        var wrapper, instance;
        var modalsContainer = global.document.createElement('div');
        var recognitionProfileZoom = global.document.createElement('div');
        var categoryZoom = global.document.createElement('div');

        modalsContainer.id = 'modalsContainer';
        recognitionProfileZoom.id = 'recognitionProfileZoom';
        categoryZoom.id = 'categoryZoom';
        global.document.body.appendChild(modalsContainer);
        global.document.body.appendChild(recognitionProfileZoom);
        global.document.body.appendChild(categoryZoom);  

完成此操作后,您可以期望值,并正常使用DOM元素。

对于初学者,所有ID都是小写的,如果您希望ID与所有浏览器一起使用,则不应在ID中使用大写。此外,还要习惯获取元素并检查getElementByID的返回,不要假设它会成功。HTML元素ID是。所有浏览器由于IE8在
getElementById
中支持区分大小写的字符串。为什么不直接模拟它们呢?我如何模拟DOM元素?对于初学者来说,所有ID都是小写的,如果你想让它在所有浏览器中工作,就不应该在ID中使用大写。还要习惯于获取元素并检查getElementById的返回,不要假设它会succeed.HTML元素ID是。自IE8以来的所有浏览器都支持
getElementById
中区分大小写的字符串。为什么不直接模拟它们?如何模拟DOM元素?
it('Should hide the modal', function() {
        var wrapper, instance;
        var modalsContainer = global.document.createElement('div');
        var recognitionProfileZoom = global.document.createElement('div');
        var categoryZoom = global.document.createElement('div');

        modalsContainer.id = 'modalsContainer';
        recognitionProfileZoom.id = 'recognitionProfileZoom';
        categoryZoom.id = 'categoryZoom';
        global.document.body.appendChild(modalsContainer);
        global.document.body.appendChild(recognitionProfileZoom);
        global.document.body.appendChild(categoryZoom);