Реквизит класса пуст, пока тестирую его через фермент - PullRequest
0 голосов
/ 17 января 2019

Выполнение следующего шага:

let wrapper;
let container;
let store = mockStore(initialState);
beforeEach(() => {
    wrapper = mount(
        <Provider store={store}>
            <Component />
        </Provider>,
    );
    container = wrapper.find(Component);
    console.log("props:",container.props(),"\nstate:",container.state())
});

Я ожидаю увидеть в консоли реквизиты, которые я написал в магазине и передал их с помощью mapStateToProps, но вместо этого я вижу пустой объект. Может кто-нибудь объяснить мне, что я делаю не так, пожалуйста? Постскриптум Прямо сейчас Компонент - простой класс, если я начинаю использовать HOC (через соединение), я вообще не могу достичь своего Компонента

1 Ответ

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

Если вы тестируете компонент без подключения HOC. Тогда вы никогда не увидите реквизиты из mapStateToProps, поскольку импортированный вами компонент не запускает функцию соединения.

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

-

Редактировать: Если нет возможности получить доступ к подключенному компоненту, просто используйте компонент и объявите все реквизиты вручную.

Примерно так:

import { Foo } from '../foo';

const props = {
  title: 'Hello',
  subTitle: 'World'
};

describe('<Foo />', () => {
  test('should make props available', () => {
    const wrapper = mount(<Foo {...props} />);
    expect(wrapper.props).toEqual(props);
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...