Почему этот контейнер не может вернуть узел для работы с имитацией или вызовом функции в ферменте? - PullRequest
0 голосов
/ 04 августа 2020

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

import React, { Component } from "react";

class CounterButton extends Component {
    constructor(props) {
        super(props);
        this.state = { count: 1 };
    }

    shouldComponentUpdate(nextProps, nextState) {
        if (this.state.count !== nextState.count) {
            return true;
        }
        return false;
    }

    render() {
        return (
            <button
                id="btn"
                color={this.props.color}
                onClick={() =>
                    this.setState((state) => ({ count: state.count + 1 }))
                }
            >
                Count: {this.state.count}
            </button>
        );
    }
}

export default CounterButton;

Затем я использую Enzyme для проверки события щелчка

describe("CounterButton component", () => {
    it("Shallow rendering", () => {
        const mockColor = "red";
        const wrapper = shallow(
            <CounterButton color={mockColor}></CounterButton>
        );

        expect(wrapper.state("count")).toEqual(1);
        wrapper.find('[id="btn"]').simulate("click");

        // wrapper
        //  .find('[id="btn"]')
        //  .invoke("onClick")()
        //  .then(() => {
        //      expect(wrapper.state().count).toEqual(2);
        //  });
    });
});

либо с помощью моделирования, либо с помощью вызова, и он возвращает это метод «simulate / invoke» предназначен для запуска на 1 узле. Вместо этого был найден 0.

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

Я работаю над win10 с git bash .

Кто-нибудь может помочь?

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