J'utilise Jest pour simuler certaines fonctions d'un module et pour tester de la manière suivante:

jest.mock("module", () => ({
  funcOne: jest.fn(),
  funcTwo: jest.fn(),
  ...
}));

import {funcOne, funcTwo, ...} from "module";

test("something when funcOne returns 'foo'", () => {
  funcOne.mockImplementation(() => 'foo');  // <- Flow error
  expect(...)
});

test("that same thing when funcOne returns 'bar'", () => {
  funcOne.mockImplementation(() => 'bar');  // <- Flow error
  expect(...)
});

Comment puis-je empêcher Flow de signaler une property 'mockImplementation' not found in statics of function erreur sans suppression d'erreur (par exemple, $FlowFixMe)?

Je comprends que le problème vient du fait que les fonctions définies dans le module ne sont pas des fonctions simulées par Jest et, en ce qui concerne Flow, ne contiennent pas de méthodes telles que mockImplementation, mockReset, etc.

11
Palisand 11 juil. 2017 à 04:17

2 réponses

Meilleure réponse

Merci, Andrew Haines, les commentaires sur le problème connexe que vous avez posté fournissent une solution. Je suis satisfait de ce qui suit:

const mock = (mockFn: any) => mockFn;

test("something when funcOne returns 'foo'", () => {
    mock(funcOne).mockImplementation(() => 'foo');  // mo more flow errors!
    ...
});
7
Palisand 11 août 2017 à 17:15

Vous pouvez également desserrer la contrainte de type en ligne:

test("something when funcOne returns 'foo'", () => {
    (funcOne: any).mockImplementation(() => 'foo');  // mo more flow errors!
    ...
});
1
Kevin Bruccoleri 3 déc. 2019 à 14:56