Тестирую шутку юнит-тестом и всегда получаю неопределенный - PullRequest
0 голосов
/ 07 апреля 2020

давайте у меня будет следующий функциональный компонент в React

const TestComponent = ({ name, ...props }) => {


  return (
    <div>
      {name}
    </div>
  );
};

TestComponent.propTypes = {
  name: T.object,
  classes: T.object,
};

export default TestComponent

в моем тесте у меня это

describe('Test component ', () => {
    it("name should match", () => {
        const obj ={
            name: "Test",
        };
        const wrapper = shallow(<TestComponent name={obj}/>);
        expect(wrapper.name).toEqual({
            name: "Test",
        })
    });
});

когда я запускаю тест npm, я продолжаю получать оболочку, не определенную

    Expected: {"name": "Test"}
    Received: undefined

      35 |         };
      36 |         const wrapper = shallow(<TestComponent name={obj}/>);
    > 37 |         expect(wrapper.name).toEqual(obj)
         |                                 ^
      38 |     });
      39 | });
      40 | 

Я пытаюсь сопоставить оба объекта, но я не уверен, почему я получаю неопределенное значение, несмотря на то, что уже отправил информацию

1 Ответ

1 голос
/ 08 апреля 2020

Вы должны использовать .props () => Объект API фермента. Например,

index.tsx:

import React from 'react';

const TestComponent = ({ name, ...props }) => {
  return <div>{name}</div>;
};

export default TestComponent;

index.test.tsx:

import TestComponent from './';
import React from 'react';
import { shallow } from 'enzyme';

describe('61087595', () => {
  it('should pass', () => {
    const obj = {
      name: 'Test',
    };
    const wrapper = shallow(<TestComponent name={obj} />);
    expect(wrapper.props().children).toEqual({ name: 'Test' });
  });
});

Результаты модульного теста со 100% покрытием:

 PASS  stackoverflow/61087595/index.test.tsx (7.805s)
  61087595
    ✓ should pass (6ms)

-----------|---------|----------|---------|---------|-------------------
File       | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
-----------|---------|----------|---------|---------|-------------------
All files  |     100 |      100 |     100 |     100 |                   
 index.tsx |     100 |      100 |     100 |     100 |                   
-----------|---------|----------|---------|---------|-------------------
Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        8.868s, estimated 10s

исходный код: https://github.com/mrdulin/react-apollo-graphql-starter-kit/tree/master/stackoverflow/61087595

...