Как протестировать неэкспортированные компоненты в Enzyme, которые снижают мою оценку покрытия - PullRequest
0 голосов
/ 24 июня 2019

У меня есть компонент, который я тестирую с поддержкой подкомпонентов. К сожалению, мой отчет о покрытии показывает снижение процента из-за того, что они, по-видимому, не тестировались, и мне было интересно, как я могу решить эту проблему.

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...