我使用react
與styled-components
和jest
enzyme
爲我的測試。我遇到了麻煩,因爲theme
從styled-components
,測試主題組件不斷出現錯誤。酶主題呈現風格的組件
我的部分是:
const Wrapper = styled.header`
position: fixed;
top: 0;
left: 0;
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: space-between;
width: 100%;
height: 64px;
background-color: ${({ theme }) => theme.colors.main.default};
color: ${({ theme }) => theme.colors.main.text};
`
我的測試是:
it('should render a <header> tag',() => {
const renderedComponent = shallow(<Wrapper />)
expect(renderedComponent.type()).toEqual('header')
})
玩笑給了我這個錯誤:
<Wrapper /> › should render a <header> tag
TypeError: Cannot read property 'main' of undefined
at Object.<anonymous>._styledComponents2.default.header.theme (app/containers/AppBar/Wrapper.js:13:182)
基本上,它拋出一個錯誤,因爲theme
是未定義如此它無法讀取其中的colors
屬性。我如何將主題傳遞給我的組件?
你找到任何解決問題了嗎? – rels
你曾經解決過這個問題嗎? – DavidWorldpeace
嗨,很抱歉,很長的延遲!與此同時,一些公用事業公司推出了帶有風格的組件。 他們推薦的主題只是將它作爲道具傳遞。你也可以創建一個圍繞「淺」方法的封裝來自動執行。 ([Source](https://github.com/styled-components/jest-styled-components#theming)) – Dispix