¿Cómo funciona jest.fn ()

¿Alguien puede explicar cómo funciona jest.fn () realmente con un ejemplo del mundo real, ya que estoy literalmente confundido sobre cómo usarlo y dónde debe usarse?

Por ejemplo, si tengo el componente Países que busca la Lista de países al hacer clic en un botón con la ayuda de la función Utilidades

export default class Countries extends React.Component {
  constructor(props) {
    super(props)

    this.state = {
      countryList:''
    }
  }

  getList() {
    //e.preventDefault();
    //do an api call here
    let list = getCountryList();
    list.then((response)=>{ this.setState({ countryList:response }) });
  }

  render() {

    var cListing = "Click button to load Countries List";

    if(this.state.countryList) {
      let cList = JSON.parse(this.state.countryList);
      cListing = cList.RestResponse.result.map((item)=> { return(<li key={item.alpha3_code}> {item.name} </li>); });
    }

    return (
      <div>
        <button onClick={()=>this.getList()} className="buttonStyle"> Show Countries List </button>
        <ul>
          {cListing}
        </ul>
      </div>
    );

  }
}

Función de utilidades utilizada

const http = require('http');


    export function getCountryList() {
      return new Promise(resolve => {
        let url = "/country/get/all";
        http.get({host:'services.groupkt.com',path: url,withCredentials:false}, response => {
          let data = '';
          response.on('data', _data => data += _data);
          response.on('end', () => resolve(data));
        });
      });


    }

¿Dónde podría usar Jest.fn () o cómo puedo probar la función getList cuando hago clic en el botón

Respuestas a la pregunta(1)

Su respuesta a la pregunta