Как вы пишете шутливые ферментные утверждения для стилизованных компонентов?
Обычно я настраиваю тесты так:
import React from 'react';
import { shallow } from 'enzyme';
// test-setup.js
import { configure } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
import Post from '../components/Post';
import Header from '../components/Header';
import HeaderDefaultPropsInit from './default-props/Header.defaultProps';
//import localStorage from './../../setUpTests';
configure({ adapter: new Adapter() });
describe('The header before all of the articles have been read', () => {
let wrapper;
beforeEach(() => {
const defaultProps = {
...HeaderDefaultPropsInit,
fetchPost: jest.fn(),
history: {
push: jest.fn(),
},
};
wrapper = shallow(<Header {...defaultProps} />);
});
Вывод обертки будет выглядеть почтикак обычный блок HTML. Обычно я пишу утверждения, используя wrapper.find('some-element')
, например:
it('renders the image correctly', () => {
expect(wrapper.find('.image').hasClass('image')).toBe(true);
});
, но это для проверки вывода jsx, отображаемого ферментом, и выход легко пересекается, потому что вы можете просто использовать синтаксис типа jQuery, потому что он приходиткак html.
Однако:
Когда я использовал стилизованные компоненты, результат console.log (wrapper.debug ()) таков:
<styled.div>
<styled.div color={[undefined]}>
<styled.span>
...loading
</styled.span>
<br />
<strong className="h4">
<styled.span />
</strong>
</styled.div>
</styled.div>
Шоковый ужас - нет нормальных html-элементов для записи нормальных утверждений!
Как же вы пишете утверждение для:
<styled.div>
вместоиз
<div class="some-class">
Ничто не может отличить один элемент от другого
expect(wrapper.find('styled.div').contains('..loading')).toBe(true);
может относиться к любому styleled.div
Я просто хочу проверить, содержит ли онсообщение "... загрузка". Должно быть, я упускаю что-то очевидное - как все это делают?