Пакет jest-fetch-mock для тестирования не работает. Ошибка json

Очень странно работает пакет jest-fetch-mock для тестирования. В некоторых случаях срабатывает, в некоторых выдает ошибку. Вот например:

Тестируемая функция:

dbUpdateRequest = (props, state) => {
//если значение было изменено
if (props.data.value != state.value) {
  fetch(`/api/data/user_settings/${state.id}`, {
    method: 'POST',
    credentials: 'same-origin',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({param_value: state.value})
  })
    .then(response => response.json())
    .then(response => {
      if (!response['Answer']) {
        //Если мы здесь, то ошибка данных (формата и пр.)
        this.getData();
      }
     })
    .catch(error => {
      //Что-то упало
      //Обнуляем данные
      this.setState({
        user_settings: []
      });
    });
}
  };

Тест:

     const initialState = { 
  settings: {
    user:{
      userId: 1 
    }
  } };

const mockStore = configureStore();
let store, wrapper;
let groups_data = [
    {id: 1, group_name: "Сеть"},
    {id: 2, group_name: "SXF-карты"}
  ];
  
let user_data = { group: "Сеть",
  param: "Ip-адрес сервера",
  user: "Ivanov",
  value: "192.168.70.02"};

const waitUpdateState = () => {
    return new Promise((resolve) => {
      setTimeout(resolve,0);
    })
  }
 
  beforeEach(()=> {
    fetch.resetMocks()
    fetchMock.doMock()
    store = mockStore(initialState); 
   
  })

  test('update данных в базе', async () => {
      //Мок для запросов при создании компонента. Работает нормально
      fetch.mockResponseOnce(JSON.stringify({settings_group: groups_data, 
        user_settings: user_data}));
      wrapper = shallow(<Settings store = {store}/>);
      const instance = wrapper.instance();
     
      const props = {
        data: { group: "Сеть",
        param: "Ip-адрес сервера",
        user: "Ivanov",
        value: "192.168.70.02"},
      }
      let arg = {value:"192.168.70.02", id: 1}
      //Мок для запросов функции. Не работает!
      fetch.mockResponseOnce(JSON.stringify({Answer: true}));
      instance.dbUpdateRequest(props, arg);
      await waitUpdateState();
      expect(global.fetch.length).toBe(0);
    })

Ошибка:

     FetchError: invalid json response body at  reason: Unexpected end of JSON input
 at node_modules/node-fetch/lib/index.js:273:32

И это не первый раз. До этого тоже пыталась его использовать для теста другой функции, результат был с такой же ошибкой, в итоге глобально переопределяла fetch, но теперь все таки нужны возможности этого пакета. В плане формата передаваемых данных - пробовола по-разному писать, даже вставляла то же самое, что и в первом вызове (см комментарии в коде), который вроде работает, но итог - та же ошибка.

Думалось, что в самой функции мб косяк с json (хотя ошибка и в другой функции повторялась), но console.log(state.value) корректно все выводит.

Помогите пожалуйста разобраться.


Ответы (0 шт):