У меня есть компонент, который я тестирую с поддержкой подкомпонентов. К сожалению, мой отчет о покрытии показывает снижение процента из-за того, что они, по-видимому, не тестировались, и мне было интересно, как я могу решить эту проблему.
import React from 'react';
import {Button} from './button';
import {styled} from 'styletron';
import {Block} from './block';
import {Link} from 'react-router-dom';
const StyledLink = styled(Link, ({$theme}) => ({ // not covered
color: $theme.colors.mono100
}));
const StyledContainer = styled(Block, ({$theme}) => { // not covered
return {
display: 'flex',
flexDirection: 'row',
justifyContent: 'space-between',
alignItems: 'center',
};
});
const StyledItem = styled('div', ({$theme}) => { // not covered
return {
marginRight: $theme.sizing.scale900,
marginLeft: $theme.sizing.scale900,
};
});
const InboxItem = (props) => {
const {itemName, itemUrl, itemUrlLabel} = props;
return (
<StyledContainer>
<StyledItem>{itemName}</StyledCardItem>
<StyledItem>
<Button>
{itemUrl && itemUrlLabel ? (
<StyledLink to={itemUrl}>{itemUrlLabel}</StyledLink>
) : null}
</Button>
</StyledItem>
</StyledContainer>
);
};
export default MainItem;
Мне посоветовали использовать dive
для доступа к неэкспортированным подкомпонентам, которые снижают мое покрытие и проверяют их. Мой текущий тест выглядит следующим образом:
test('StyledLink should be there', () => {
const output = shallow(<InboxItem {...props} />).dive();
.find('StyledLink');
expect(output).toHaveLength(1);
});
к сожалению, этот тест не пройден, так как длина составляет 0
. Я пробовал войти
const output = shallow(<InboxItem {...props} />).dive();
и получил это:
<ContextConsumer>
[function]
</ContextConsumer>