测试特定的MaterialUI图标

时间:2020-09-16 17:01:24

标签: reactjs jestjs material-ui react-testing-library

是否可以在特定的Material UI图标中以ArrowLeft / ArrowRight而不是.MuiSvgIcon-root进行测试?

应用程序组件:

return {open ? <ArrowLeft/> :<ArrowRight/>}

RTL测试:下面的测试通过了,但是没有签入特定的ArrowLeft或ArrowRight图标。

describes("MockTest",()=>{

it("renders Left arrow",()=>{
const {container} = renders(<App open={true}/>);
expect(container.querySelector(".MuiSvgIcon-root").toBeTruthy();
});

it("renders Right arrow",()=>{
const {container} = renders(<App open={false}/>);
expect(container.querySelector(".MuiSvgIcon-root").toBeTruthy();
});

});

2 个答案:

答案 0 :(得分:0)

对于RTL包来说这是不可能的。查看RTL软件包作者的这篇article帖子。

RTL 支持浅层渲染。因此,public Object[] invoke(Map<String, Object> request) { InputStream is = (InputStream) request.get(Constants.BODY); String abc = getIdFromBody(is) if(abc !=null) { return Constants.PHASE_DONE;} } private String getIdFromBody(InputStream is) { ObjectNode node; String text = null ; try { text = IOUtils.toString(is, StandardCharsets.UTF_8.name()); logger.info("requestPayload={}", text); } catch (IOException e) { e.printStackTrace(); } logger.info("didnt get entity_id ", text); return text; } ArrowLeft将始终呈现。

答案 1 :(得分:0)

能够通过渲染 Material UI 图标、抓取内部 html,然后将其与我的组件图标进行比较来测试这一点。

const { container } = render(<ArrowRight />);
const iconHtml = container.innerHTML;
cleanup();

const { container } = renders(<App open={false}/>);
expect(
    container.querySelector(".MuiSvgIcon-root").innerHTML
).toEqual(iconHtml);