Невозможно установить контекст в тесте фермента - PullRequest
0 голосов
/ 10 декабря 2018

Я использую метод, добавленный в контекст, который запускается в методе жизненного цикла componentDidMount().

Я должен иметь возможность заглушить контекст, предоставив опцию для метода Enzyme shallow(), но это не передается моему компоненту.Например:

Мой тест:

it('renders without crashing', () => {
  const context = { dispatch: jest.fn() };

  shallow(<MyComponent />, { context });
});

и мой компонент:

import React, { Component } from 'react';
import { Consumer, Context } from '../../context';

class MyComponent extends Component {
  static contextType = Context;

  componentDidMount() {
    const { dispatch } = this.context; // dispatch is `undefined`

    dispatch({ type: 'BLAH', payload: 'blah' });
  }

  etc...

}

this.context - это объект, но он не имеет свойств - dispatchвсегда неопределен.

Ответы [ 2 ]

0 голосов
/ 06 июня 2019

Это довольно странно, но вы можете использовать существующую поддержку устаревшего API для тестирования компонентов, которые фактически используют новый API.

В вашем случае вы можете сделать следующее в своем тестовом коде:

import PropTypes from 'prop-types';

MyComponent.contextTypes = {
    dispatch: PropTypes.any,
};

Теперь shallow(<MyComponent />, { context }); должен отрисовываться с желаемым значением контекста.

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

К сожалению, enzyme пока не поддерживает createContext и contextType.

Вы можете увидеть его прогресс здесь .

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