मैंने सामग्री-यूआईMyStyledButton
पर आधारित एक कस्टम बटन ( ) लिखा है । Button
import React from "react";
import { Button } from "@material-ui/core";
import { makeStyles } from "@material-ui/styles";
const useStyles = makeStyles({
root: {
minWidth: 100
}
});
function MyStyledButton(props) {
const buttonStyle = useStyles(props);
const { children, width, ...others } = props;
return (
<Button classes={{ root: buttonStyle.root }} {...others}>
{children}
</Button>
);
}
export default MyStyledButton;
यह एक विषय का उपयोग करके स्टाइल किया गया है और यह backgroundColor
पीले रंग की एक छाया निर्दिष्ट करता है (विशेष रूप से #fbb900
)
import { createMuiTheme } from "@material-ui/core/styles";
export const myYellow = "#FBB900";
export const theme = createMuiTheme({
overrides: {
MuiButton: {
containedPrimary: {
color: "black",
backgroundColor: myYellow
}
}
}
});
घटक को मेरे मुख्य में त्वरित किया जाता है index.js
और अंदर लपेटा जाता है theme
।
<MuiThemeProvider theme={theme}>
<MyStyledButton variant="contained" color="primary">
Primary Click Me
</MyStyledButton>
</MuiThemeProvider>
यदि मैं क्रोम DevTools में बटन की जांच करता हूं तो background-color
उम्मीद के मुताबिक "गणना" है। फ़ायरफ़ॉक्स DevTools में भी यही स्थिति है।
हालाँकि जब मैं जाँच करने के लिए एक JEST परीक्षण लिखता हूँ background-color
और मैं DOM नोड शैली को क्वेरी करता हूँ, तो बटन का उपयोग करके getComputedStyles()
मैं transparent
वापस आ जाता हूँ और परीक्षण विफल हो जाता है।
const wrapper = mount(
<MyStyledButton variant="contained" color="primary">
Primary
</MyStyledButton>
);
const foundButton = wrapper.find("button");
expect(foundButton).toHaveLength(1);
//I want to check the background colour of the button here
//I've tried getComputedStyle() but it returns 'transparent' instead of #FBB900
expect(
window
.getComputedStyle(foundButton.getDOMNode())
.getPropertyValue("background-color")
).toEqual(myYellow);
मैंने सटीक समस्या के साथ कोडस्बैंडबॉक्स, पुन: पेश करने के लिए न्यूनतम कोड और असफल जेईएसटी टेस्ट शामिल किया है।
theme
परीक्षण में उपयोग करने की आवश्यकता नहीं होगी? के रूप में, लपेट <MyStyledButton>
में <MuiThemeProvider theme={theme}>
? या सभी घटकों के लिए विषय को जोड़ने के लिए कुछ रैपर फ़ंक्शन का उपयोग करें?