Как мне заглушить форму Ant Design getFieldDecorator ()? - PullRequest
0 голосов
/ 07 декабря 2018

Я пытаюсь сделать простой тестовый снимок Jest для формы, но при запуске теста я получаю сообщение об ошибке:

Uncaught [TypeError: getFieldDecorator(...) is not a function]

Я подумал, что могу просто создать заглушку для getFieldDecorator и пройтиэто в подпорках, но это не работает.

Это тест:

  it('renders correctly initially', () => {

const testForm = {
  getFieldDecorator: jest.fn()
};

const wrapper = mount(
  <Router>
    <LoginForm form={testForm} />
  </Router>
);

expect(wrapper).toMatchSnapshot();

});

Это метод render () в моем компоненте:

  render() {
const { form } = this.props;
const { getFieldDecorator } = form;

return (
  <Form onSubmit={this.handleSubmit} className="login-form">
    <FormItem>
      {getFieldDecorator('username', {
        rules: [{ required: true, message: 'Please enter your username!' }]
      })(
        <Input
          prefix={<Icon type="user" style={{ color: 'rgba(0,0,0,.25)' }} />}
          placeholder="Username"
        />
      )}
    </FormItem>

Я экспортирую свой компонент как:

export default withRouter(Form.create()(LoginForm));

1 Ответ

0 голосов
/ 10 декабря 2018

Вы на правильном пути, единственное, что вы пропустили, это то, что getFieldDecorator должен возвращать функцию, поэтому вам нужно соответствующим образом смоделировать ее, то есть:

const testForm = {
  getFieldDecorator: jest.fn( opts => c => c )
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...