Nano Hash - криптовалюты, майнинг, программирование

Ошибка React+Enzyme+Redux: метод «simulate» предназначен для запуска на 1 узле. 0 найдено вместо этого

Я новичок в Jest и Enzyme, и я пытаюсь понять, как решить эту ошибку. Я перепробовал все возможные решения (в том числе те, что есть в stackoverflow).

Если это не правильный подход, я был бы признателен, если бы мне сказали, что это такое.

Что я хочу протестировать?

Компонент (с именем «Компания»), у которого есть кнопка «Добавить», и при ее нажатии открывается модальное окно (управляемое состоянием). Итак, я хочу проверить, используется ли при нажатии кнопки состояние для управления видимостью модальных изменений с «ложного» на «истинное».

Мой подход до сих пор:

Просматривая документы и множество ответов на stackoverflow, я изменил свой код в соответствии с тем, что сработало для меня.

Компания.js

import React from 'react';
import { Modal Col, Label, Row, Card, CardBody, CardColumns, CardHeader } from 'reactstrap';
import { connect } from 'react-redux';
import MUIDataTable from "mui-datatables";

const columns = [/*table data headers */ ]

export class Company extends React.Component {

    state = {
        show: false,
     
        }
        
    }
  
    handleShow = () => {...}

   
    componentDidMount() {
        this.fetchCompanies();
    }

    
    fetchCompanies = () => { /*API calls */ }       

    render() {
const options = {
            filterType: 'checkbox',
            selectableRows:false,
            customToolbar:() => {
                return <Button className="btn btn-primary"  id="companyAdd" onClick={this.handleShow}>Add</Button>
            }
        }
        return (
            <div>
            <Col xs="12" lg="12">
                <MUIDataTable
                columns={columns}
                options={options}
            />
            </Col>
            <Col xs="12" lg="12">
                <Modal isOpen={this.state.showChangePwd}></Modal>                
        </div>
        );
    }

}

const mapDispatchToProps = dispatch => ({..});

function mapStateToProps(state) {..}

export default connect(mapStateToProps,mapDispatchToProps)(Company);

Я пытаюсь найти кнопку в объекте опций (внутри рендеринга)

Компания.test.js

import ReactDOM from "react-dom";
import {Company} from "../Company";
import { cleanup} from "@testing-library/react";

import "@testing-library/jest-dom";
import { configure, mount, shallow , render} from "enzyme";

afterEach(cleanup)
it("renders without crashing", () => {
   expect(render(<Example/>))

})

it("renders button correctly", () => {
    const onButtonClickMock = jest.fn();
    const wrapper = shallow(<Example updateSelectedDashboard={onButtonClickMock}/>)
    expect(wrapper.state('show')).toEqual(false);
    const button = wrapper.find('companyAdd');
    button.simulate('click') 
    expect(wrapper.state('show')).toEqual(true);
})

Я также пробовал .dive(), но это не сработало.


Ответы:


1

Вы забыли свои селекторы css :)

const button = wrapper.find('#companyAdd');
26.11.2020
  • Куда ведет эта линия? 27.11.2020
  • Это определение кнопки, нажатие на которую он имитирует. Просто исправление опечатки. Я думал, это очевидно. 27.11.2020
  • он все еще дает мне ту же ошибку :( и я даже пробовал <button data-test ='companyAdd'>Add </button> and tried to find in test code with const wrapper = component.find([data-test='companyAdd']);` даже это не работает 27.11.2020
  • Итак, я только что заметил, что вы используете shallow, в этом случае find() будет углубляться только на один уровень. Вы должны либо mount использовать свой компонент, либо использовать dive() (опять же, может быть этого будет недостаточно, используйте console.log или debug() для проверки такого элемента). 27.11.2020
  • Я пытался использовать mount, и debug() помог мне найти кнопку с классом «companyAdd», но ошибка осталась прежней. 29.11.2020
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..