#reactjs #jestjs #enzyme
#reactjs #jestjs #фермент
Вопрос:
Я хочу найти компонент внутри другого компонента в Jest. После нахождения компонента длина должна быть 1
, но я получаю 0
длину.
Код тестовых примеров выглядит следующим образом —
beforeEach(() => {
wrapper = enzyme.mount(
<Rest
onApplyClick={mockOnApplyClick}
translateFn={mockTranslateFn}
someData={mockSomeData}
/>
);
});
и тогда у нас есть тестовый пример —
it('Test case', () => {
let Button= wrapper.find(Button);
Button.simulate('click');
expect(wrapper.find(StyledPopover).prop('open')).toBe(true);
act(() => {
let newWrapper = wrapper
.find(<NewComponent {...props} myData={mockMyData[1]} />)
expect(newWrapper.length).toBe(1);
console.log(newWrapper.length, "newWrapper.length")
});
});
Я получаю 0
длину, console.log(newWrapper.length)
но если мы проходим let newWrapper = wrapper.find(NewComponent)
, то я получаю длину 1
. Итак, как решить эту проблему, поскольку я хочу передать props NewComponent
, чтобы я мог найти некоторые другие элементы внутри NewComponent
.
Комментарии:
1. @hurricane разве не наоборот, вы используете shallow, когда не хотите отображать дочерние компоненты?
2. Вы можете попробовать
wrapper.find(NewComponent).setProps({props1: value})
3. @UKS это говорит
ReactWrapper::setProps() can only be called on the root.
, когда я устанавливаю реквизит4. Хорошо, вы можете добавить свой компонент Rest?
5. Я внес изменения —
act(() => { let newWrapper = wrapper.setProps({ children: <NewComponent {...props} myData={mockMyData[1]} /> }); expect(newWrapper.length).toBe(1); newWrapper .find(RadioButton) .first() .props() .onChange('hello', {target:{id:'hello' , isChecked: false} });
теперь он говорит TypeError: не удается прочитать свойство ‘id’ неопределенного