Почему я не могу обнаружить элемент кнопки с помощью фермента? - PullRequest
0 голосов
/ 10 октября 2018

Я использовал npm install --save enzyme react-test-renderer enzyme-adapter-react-16 для начала.Я написал код ниже, затем запустил npm test, чтобы получить результат, полученный в Terminal.

Что я делаю не так и как я могу это исправить?

Вот CheckoutButton.js:

import React from 'react';
import classes from './CheckoutButton.css';

const button = (props) => (
    <button className={classes.Button} id="test" onClick={props.clicked}>Checkout</button>
);

export default button;

Вот CheckoutButton.test.js:

import React from 'react';

import { configure, shallow } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
import CheckoutButton from './CheckoutButton';

configure({
    adapter: ({adapter: new Adapter()})
});

describe('<CheckoutButton />', () => {
    it('should logout upon clicking the button', () => {
        const wrapper = shallow(<CheckoutButton/>);
        expect(wrapper.find("button")).toHaveLength(1);
    });
});

Вот что я получаю в Терминале:

Test Suites: 2 failed, 2 total
Tests:       1 failed, 1 total
Snapshots:   0 total
Time:        2.572s, estimated 3s
Ran all test suites related to changed files.

Ответы [ 3 ]

0 голосов
/ 10 октября 2018

В CheckoutButton.js обновите свой код до:

import React from 'react';
import classes from './CheckoutButton.css';

const CheckoutButton = (props) => (
    <button className={classes.Button} id="test" onClick={props.clicked}>Checkout</button>
);

export default CheckoutButton;

В соответствии с соглашением об именах компонентов React вы всегда должны называть свой компонент в PascalCase.

Имя компонента всегда должно начинаться с заглавной буквыписьмо.Внесение этого изменения пройдет тестовый набор.

Более подробную информацию можно найти здесь: Соглашение об именах компонентов .

0 голосов
/ 10 октября 2018

Конфигурация вашего адаптера не соответствует действительности.

Попробуйте:

configure({ adapter: new Adapter() });

вместо:

configure({
   adapter: ({adapter: new Adapter()})
});
0 голосов
/ 10 октября 2018

Потому что он у вас в корне, когда вы пытаетесь найти его у детей.Ваше ожидание должно быть expect(wrapper.type()).toEqual('button');

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