У меня есть стилевой компонент, обертывающий элемент флажка ввода с некоторыми стилями. В моем приложении этот флажок уже может быть установлен по умолчанию. Это часть кода компонента:
const InputCheckbox = styled.input.attrs((props) => ({
id: props.id,
type: 'checkbox',
checked: props.checked
}))`
visibility: hidden;
&:checked + label {
background-color: ${(props) => props.theme.mainColor};
border-color: ${(props) => props.theme.mainColor};
&:after {
border-left: 2px solid #fff;
border-bottom: 2px solid #fff;
}
}
`;
function Checkbox(props) {
return (
<CheckboxContainer>
<InputCheckbox
id={props.id}
checked={props.checked}
onChange={(event) => {
props.onChange(event.target.checked);
}}
/>
<CheckboxLabel id={props.id} />
</CheckboxContainer>
);
}
Я использую Jest и Enzyme для тестирования, но я не смог найти никакой информации о том, как погрузиться в вашу мелкую оболочку Enzyme, чтобы убедиться, что входные данные внутри моего InputCheckbox имеют свойство selected как true. Например:
describe('Checkbox', () => {
const mockProps = {
id: 'settings-user',
checked: true,
onComplete: (id) => jest.fn(id)
};
const component = shallow(<Checkbox {...mockProps}/>);
describe('on initialization', () => {
it('Input should be checked', () => {
const inputCheckbox = component.find('InputCheckbox');
expect(inputCheckbox.props().checked).toBe(true);
});
});
});
Этот тест не пройден, потому что .find()
не может найти ни одного узла.