@Dasslier
FrontEnd Developer

Как тестировать компонент с локальным стором MobX?

Есть компонент класс, в его конструкторе инициализируется локальный store MobX вот так:
constructor(props) {
        super(props);
        this.store = new SubscribeStore({
            userId: this.props.userId,
            type: this.props.isFollowers ? 'followers' : 'subscriptions'
        });
    }


В итоге стор лежит в this и при написании тестов не могу найти способ им управлять.
Есть вариант вынести этот стор в глобальное пространство и прокидывать через Provider, но не хотелось бы засорять глобальное пространство. Кто сталкивался с таким?
Для тестов использую Jest и Enzyme
  • Вопрос задан
  • 350 просмотров
Пригласить эксперта
Ответы на вопрос 2
@camelCaseVlad
Вот вам иной концепт при тестировании. Тестируйте функциональность компонента, а не строки и функции компонента. Тем более ошибочно выносить приватные функции в глобальное пространство.

Пишите свои тесты так, чтобы они не фейлелись, если вы далее перепишите свое приложение, убрав из него мобх и переписав компоненты на хуки, но оставив прежний функционал компонента.

Даже юнит тесты пишите для юзера. Юзеру все равно, вы использовали компонент с мобх или хуки и контекст.
Ответ написан
Комментировать
@Dasslier Автор вопроса
FrontEnd Developer
Пока что сделал такое решение, может кому пригодится. Но мне кажется это костыль.
1) Импортирую свой тестируемый класс
2) Расширяюсь от этого класса новым
3) В конструкторе присваиваю в this.store другой объект с моками
4) в componentDidMount вызываю super.render()

Все это дело рендерю shallow из enzyme, и ShallowRenderer из Jest
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы