Обещание не работает с шуткой в ​​REACTJS - PullRequest
0 голосов
/ 13 ноября 2018

У меня остается TypeError: Network request failed, когда я пытаюсь проверить снимок компонента

вот компонент

import {GetAllUsersPost} from './postdata';

    class ManageUsers extends React.Component{

        render(){
            return(
                    {...}
            );
        }

componentDidMount(){
            GetAllUsersPost(UserProfile.getId()).then((result) => {
                this.setState({
                    parsed:result,
                    loading:false
                })
            });
        }
    }

Вот постданные

export function GetAllUsersPost(id) {
  const json = JSON.stringify({id: id})
  return new Promise((resolve, reject) => {
    fetch(BaseURL + 'allusers', BdRequest(json)).then((response) => response.json()).then((res) => {
      resolve(res);
    }).catch((error) => {
      reject(error);
    });
  });
}

А вот и тестовый файл (\ src__tests __ \ ManageUsers.test.jsx)

import React from 'react';
import ManageUsers from '../component/ManageUsers';
import Adapter from 'enzyme-adapter-react-16';
import Enzyme, {shallow,mount} from 'enzyme';
Enzyme.configure({adapter:new Adapter()});

  describe("ManageUsers", ()=>{
        const wrapper = shallow(<ManageUsers/>);
        const instance = wrapper.instance();
    let response;

    test("loading()",()=>{
        wrapper.setState({loading:false})
        response = JSON.stringify("")
        expect(JSON.stringify(instance.loading())).toBe(response);
    })
});

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

спасибо

1 Ответ

0 голосов
/ 13 ноября 2018

Ваш тест должен быть настроен как асинхронный тест.например,

it('should do something', async () => {
  const result = await myAsyncMethod();
});

Отредактировано для ясности - обратите внимание, что это явно не проверено , но вам нужно искать что-то из метода и состояния рендера, так как это все, что вы делаете срезультаты.

import React from 'react';
import ManageUsers from '../component/ManageUsers';
import Adapter from 'enzyme-adapter-react-16';
import Enzyme, {shallow,mount} from 'enzyme';
Enzyme.configure({adapter:new Adapter()});

describe("ManageUsers", () => {
  const wrapper = shallow(<ManageUsers/>);

  test("loading()", async () => {
    // wrapper.setState({loading:false}) // This should be a default
    expect(wrapper.find('something from the render'));
    expect(wrapper.state.parsedResults).toEqual('some result')
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...