TEST API WITH JEST (REACT JS) с использованием ax ios и перехватчиков - PullRequest
0 голосов
/ 09 апреля 2020

Я делаю тест с макетом в моем проекте. но по какой-то причине я получил эту ошибку при запуске npm test - api-service.

Я использую Jest.

Я не знаю, почему я получил эту ошибку, когда я пытаюсь запустить тест.

кто-то звонит, помогите мне?

api.service.test. js

import ApiService from './Api-service';

jest.mock('axios');

it('return wellheads', async () => {
  const wellheads = {
    0: {
      UniqueWellboreIdentifier: 'BR 3-OGX-50D-RJS',
      UniqueWellIdentifier: 'BR 3-OGX-50D-RJS',
      CountryIdentifier: 'Brazil',
      BasinIdentifier: 'Santos',
      FieldIdentifier: 'TUBARAO AZUL',
      Latitude: -23.56569,
      Longitude: -41.445133,
    },
    1: {
      UniqueWellboreIdentifier: 'BR 1-BRSA-532-SPS',
      UniqueWellIdentifier: 'BR 1-BRSA-532-SPS',
      CountryIdentifier: 'Brazil',
      BasinIdentifier: 'Santos',
      FieldIdentifier: 'No field related',
      Latitude: -25.624473,
      Longitude: -43.905731,
    },
  };
  const resp = { data: wellheads };
  axios.interceptors.get.mockResolvedValue(resp);

  return ApiService.getWellhead().then((data) =>
    expect(data).toEqual(wellheads)
  );
});

api-перехватчики. js

import axios from 'axios';
import { authContext, getAdalApiToken } from '../config/AdalConfig';
import conf, { getResource } from './../settings';

const api = axios.create({
  baseURL: getResource('psa').ApiBaseUrl,
});

api.interceptors.request.use(
  (config) => {
    return new Promise((resolve, reject) => {
      authContext.acquireToken(conf.AzureADClientId, (message, token, msg) => {
        if (!!token) {
          config.headers.Authorization = `Bearer ${token}`;
          resolve(config);
        } else {
          reject(config);
        }
      });
    });
  },
  function (error) {
    console.log(error);
    return Promise.reject(error);
  }
);

api.interceptors.response.use(undefined, (err) => {
  if (
    err.response &&
    err.response.status === 401 &&
    err.response.config &&
    !err.response.config.__isRetryRequest
  ) {
    err.response.config.__isRetryRequest = true;
    return new Promise((resolve, reject) => {
      authContext.acquireToken(conf.AzureADClientId, (message, token, msg) => {
        getAdalApiToken();
        if (!!token) {
          api.defaults.headers.common['Authorization'] = `Bearer ${token}`;
          resolve(err.config);
        } else {
          reject(err.config);
        }
      });

      // authContext.acquireToken(process.env.REACT_APP_CLIENT_ID, (message, token, msg) => {
      //   axios.defaults.headers.common['Authorization'] = `Bearer ${token}`;
      //   err.config.headers.Authorization = `Bearer ${token}`;

      //   axios(err.config).then(resolve, reject);
      // });
    });
  }
  throw err;
});

export default api;

, и при запуске возникает ошибка:

Набор тестов не смог выполнить runice.test. TypeError: Невозможно прочитать свойство 'interceptors' из неопределенного

   7 | });
   8 | 
>  9 | api.interceptors.request.use(
     |     ^
  10 |   (config) => {
  10 |   (config) => {
  11 |     return new Promise((resolve, reject) => {
  12 |       authContext.acquireToken(conf.AzureADClientId, (message, token, msg) => {
...