Как проверить конкретное значение css-свойства React-элемента?

Я хочу проверить конкретное значение css-свойства с помощью фермента. Для стилизации компонентов использовался css helper эмоций.

Предположим следующий случай:

it('title has font-size 20px', () => {
  const titleCss = css`
    font-size: 20px;
  `;

  const mountedTitle = mountWithTheme(<h1 className = {titleCss}>Title</h1>);

  expect(mountedTitle).toHaveStyleRule('font-size', '20px');
});

Здесь:

  • mountWithTheme - это просто оболочка над методом энзимного рендеринга, но позволяет передать тему;

  • toHaveStyleRule соответствует шутка-эмоция.

Это не работает, я получил

Property not found: font-size

Если вы посмотрите на jest-emotion пример, вы увидите, что там используется «стилизованная» обертка, поэтому компонент-оболочка создан, но это не относится к хелперу «css».

Я также думал об использовании помощника рендеринга ферментов для создания фактического html, но кажется, что оболочка cheerio также не имеет доступа к значениям css.

не уверен, но возможно fontSize?

Alex 11.02.2019 16:25

@Alex, нет, та же ошибка.

Gordienko R. 11.02.2019 16:34
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
2
935
1

Ответы 1

Если вы используете фермент, используйте метод render.

import React from 'react';
import { render } from 'enzyme';
import Component from '.';

describe('test css', () => {
  it('test font size', () => {
    const wrapper = render(<Component />);
    expect(wrapper.find('h1')).toHaveStyleRule('font-size', '20px');
  });
});

Другие вопросы по теме