¿Cómo burlarse de un método de ciclo de vida del componente React con Jest y Enzyme?

Los documentos de la enzima para la representación completa del DOMaquí contiene el siguiente ejemplo de espionaje de un método de ciclo de vida con Sinon:

describe('<Foo />', () => {

  it('calls componentDidMount', () => {
    sinon.spy(Foo.prototype, 'componentDidMount');
    const wrapper = mount(<Foo />);
    expect(Foo.prototype.componentDidMount.calledOnce).to.equal(true);
  });
});

¿Cuál es el equivalente a esto usando funciones simuladas de Jest?

Estoy usando Create-React-App, y preferiría no incluir a Sinon si se puede lograr lo mismo con Jest.

Así es como se vería la prueba:

describe('<App />', () => {

  it('calls componentDidMount', () => {
    jest.fn(App.prototype, 'componentDidMount');
    const wrapper = mount(<App />);
    expect(App.prototype.componentDidMount.mock.calls.length).toBe(1);
  });
});

En este caso,App.prototype.componentDidMount no hace referencia a la misma función espía como lo haría con Sinon.

Los documentos de Jest sobre cómo funcionan realmente las funciones simuladas son un poco limitados. He seguido la discusiónaquí en torno a lo que está haciendo jest.fn (), pero parece que no es realmente equivalente a sinon.spy ().

¿Cómo puedo replicar esa prueba con Jest?

Respuestas a la pregunta(2)

Su respuesta a la pregunta