Состояние доступа компонента в тесте - PullRequest
0 голосов
/ 14 января 2019

У меня есть компонент, который меняет некоторые его реквизиты, когда мы вводим разные реквизиты.

Я изо всех сил пытаюсь найти простой способ получить доступ к состоянию моего поверхностного компонента из моего теста

Вот код:

describe('componentWillReceiveProps', () => {
    it('update state isDedicatedDealPriceSelected to true', () => {
        const productComponent = shallow(<Product selectedPriceOption="Test" />);
        productComponent.setProps({ selectedPriceOption: 'dedicatedDealPrice' });
        expect(productComponent.props.isDedicatedDealPriceSelected).toBeTruthy();
    });
});

Я получил неопределенное значение, я хочу получить доступ к реквизитам isDedicatedDealPriceSelected, которые должны быть правдивыми. Я думаю, что я что-то неправильно пишу здесь, в последней строке в productComponent.props.isDedicatedDealPriceSelected Как я могу получить доступ к реквизиту моего компонента?

Я использую enzime для поверхностной визуализации моего компонента в тесте с помощью jest.

Заранее благодарен!

РЕДАКТИРОВАТЬ: я не искал доступ к реквизиту, а вместо этого состояние! извините за неправильное написание

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Чтобы получить доступ к состоянию поверхностного визуализируемого компонента, вы можете получить к нему доступ с помощью:

const wrapper = shallow(<component />);
wrapper.state().componentVar

Чтобы получить доступ к функции поверхностного компонента, вы можете получить к нему доступ с помощью:

wrapper.instance().componentFunction()
0 голосов
/ 14 января 2019

Кажется, setProps принимает обратный вызов, выполненный после повторного рендеринга. Возможно, ваш тест должен быть асинхронным, а утверждение должно быть выполнено внутри этого обратного вызова.

В примерах синхронно вызывается только componentWillReceiveProps.

https://airbnb.io/enzyme/docs/api/ShallowWrapper/setProps.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...