Фермент: Значение реквизита возвращает неопределенное значение при моделировании события onChange - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь смоделировать событие onChange с помощью функции simulate.Я также передал второй аргумент для имитации события onChange, поскольку значение является частью события.Но почему-то это дает мне неожиданный результат, так как значение, которое я передал второму аргументу, возвращает undefined вместо new comment.Есть идеи по этому вопросу?

CommentBox.js

import React from 'react';

class CommentBox extends React.Component {
    state = {
        comment: ''
    }

    handleChange = event => {
        this.setState({
            comment: event.value
        })
    }

    handleSubmit = event => {
        event.preventDefault();
    }

    render() {
        return (
            <form onSubmit={this.handleSubmit}>
                <h4>Add a comment</h4>
                <textarea onChange={this.handleChange} value={this.state.comment} />
                <div>
                    <button>Submit Comment</button>
                </div>
            </form>
        )
    }
}

export default CommentBox;

CommentBox.text.js

import React from 'react';
import { mount } from 'enzyme';
import CommentBox from 'components/CommentBox';

let wrapped;

beforeEach(() => {
    wrapped = mount(<CommentBox />);
})

afterEach(() => {
    wrapped.unmount();
})

it('has a textarea and a button', () => {
    expect(wrapped.find('textarea').length).toEqual(1);
    expect(wrapped.find('button').length).toEqual(1);
});

it('has a text area that users can type in', () => {
    wrapped.find('textarea').simulate('change', {
        target: {
            value: 'new comment'
        }
    });
    wrapped.update();

    expect(wrapped.find('textarea').prop('value')).toEqual('new comment');
});

Я ожидаю вывод new comment, но возвращается фактический undefined

Ответы [ 2 ]

2 голосов
/ 08 мая 2019
 handleChange = event => {
    this.setState({
        comment: event.target.value
    })
}

сначала внесите изменения, неправильный способ установки значения в переменной комментария

0 голосов
/ 08 мая 2019

Пожалуйста, попробуйте с ниже вместе с реализацией функции, как предложено Кишан Джайсвал:

class CommentBox extends React.Component {
constructor(props) {
    super(props);
    this.state={
      comment: ''
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...