#reactjs #material-ui #react-testing-library
#reactjs #материал-пользовательский интерфейс #react-testing-library
Вопрос:
У меня есть компонент, который отображает меню material-ui и получает anchorEl из родительского компонента. Я хочу протестировать этот компонент, но я не знаю, что мне следует отправить в качестве реквизита anchorEl
мой компонент:
import React from 'react';
import { Menu, MenuItem } from '@material-ui/core';
import { PopulatedNode, NodeMenuItem } from '../types';
interface Props {
node: PopulatedNode;
items: NodeMenuItem[];
anchorEl: (EventTarget amp; HTMLButtonElement) | undefined;
onClose: () => void;
}
const NodeMenu = (props: Props) => {
const { node, items, anchorEl, onClose } = props;
return (
<Menu
id="node-menu"
anchorEl={anchorEl}
keepMounted
open={!!anchorEl}
onClose={onClose}
data-testid="node-menu"
>
{items.map(({ onClick, disabled, label }) => (
<MenuItem
key={label}
onClick={onClick}
>
{label}
</MenuItem>
))}
</Menu>
);
};
export default NodeMenu;
Я хочу, чтобы меню было открытым, поэтому anchorEl должен иметь тип EventTarget amp; HTMLButtonElement
Как я могу это смоделировать?
Ответ №1:
Вы можете передать любой допустимый элемент DOM, т.е.:
const mockAnchorEl = document.createElement("button");
Комментарии:
1. У меня это сработало. Но я должен поместить его в метод beforeEach