Выборочное тестирование с использованием шутки - PullRequest
0 голосов
/ 15 декабря 2018

Я реализовал выборку и тестовый случай следующим образом, но это дает мне ошибку (я плохо разбираюсь в модульном тестировании).

Main.js

import React, { Component } from 'react';

class Main extends Component {
    constructor(props) {
        super(props);

        this.state = { 
            testData: [],
        }
    }

    componentDidMount() {
        fetch(`http://testurl.com/testData`)
        .then(response => response.json())
        .then(result => this.setState({ testData: result }));
    }

    render() {
        const {testData} = this.state;

        return ( 
            <div className="main"> 
                { testData.data && 
                    <section>
                        <CustomComponent movies={ testData.data } />
                    </section> 
                }
            </div>
        );
    }
}

export default Main;

Main.test.js

import React from 'react';
import ReactDOM from 'react-dom';
import { mount, shallow } from 'enzyme';
import { fetchMock } from 'fetch-mock';
import Main from "../src/Main";
import testData from './_mockData_/testData'

it('should render without crashing', () => {
    const div = document.createElement('div');
    ReactDOM.render(<Main />, div);
    ReactDOM.unmountComponentAtNode(div);
  });

describe('should renders Main correctly', () => {
    fetch('http://testurl.com/testData').then(res => {
        expect(res.data).toEqual(testData)
  })
});

Даже я пытался использовать http://www.wheresrhys.co.uk/fetch-mock/, но без разницы.

describe('should renders Main correctly', () => {
    fetchMock.get('http://testurl.com/testData').then(res => {
        expect(res.data).toEqual(testData)
  })
});

Всегда я получал следующееошибка.

ReferenceError: выборка не определена

Любая помощь будет принята с благодарностью.

Отредактировано:

Согласно комментарию я отредактировал свой код следующим образом, но не повезло.

import testData from './_mockData_/testData'

describe('Main', () => {
    it('renders without crashing', () => {
        const tree = shallow(<Main />);
        expect(tree).toMatchSnapshot();
      });

      beforeEach(() => {
        fetch.resetMocks()
      })

      it('calls API and returns data to me', () => {
        fetch.mockResponseOnce(JSON.stringify({ someData: testData }))

        //assert on the response
        fetch(`http://testurl.com/testData`).then(res => {
          expect(res.data).toEqual(testData)
        })

        //assert on the times called and arguments given to fetch
        expect(fetch.mock.calls.length).toEqual(1)
        expect(fetch.mock.calls[0][0]).toEqual('http://testurl.com/testData')
      })
});

Получил следующую ошибку:

TypeError: Невозможно прочитать свойство 'then' из неопределенного

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