/ / Module de fonction fictive avec blague et enzyme - réactions, moquages, jestjs, enzymes

Module de fonction fictive avec blague et enzyme - réactions, moquages, jestjs, enzymes

J'ai un composant React qui appelle une méthode depuis un autre module.
Le module ne fait que renvoyer 1 méthode:

export default (url, method, authorization, body) => {
const headers = { "Content-Type": "application/json" }
if (authorization) headers.Authorization = localStorage.getItem("id_token");
return fetch(url, {
method,
headers,
body: JSON.stringify(body)
}).then(res => res.json());
}

"Je voudrais me moquer de cette méthode / de ce module, le vrai code ne sera donc pas appelé lors du test des composants qui l’utilisent.
Je suis un novice chez React / Jest / Enzyme pour que je puisse manquer quelque chose de facile.

Dans mon dossier de test:

jest.mock("../../utils/fetch.js", () => () => {
Promise.resolve({_id: 1});
});
import fetch from "../../utils/fetch";

Où la méthode est utilisée:

return fetch("/api/items", "post", true, newItem).then(res => {
this.props.history.push(`/items/${res._id}`);
}).catch(console.log);

Réponses:

1 pour la réponse № 1

Donc vous avez un module qui retourne une fonction qui retournera une promesse. Si vous voulez seulement tester le bon chemin, renvoyez une promesse résolue de votre maquette:

jest.mock("./my-function.js", () => () => Promise.resolve("foo"));

si vous devez définir le résultat de la fonction lors de votre test, simulez le module avec un espion et définissez-le ultérieurement dans votre test:

jest.mock("./my-function.js", () => jest.fn());
import myFunction from "./my-function.js"
describe("foo",()=>{
it("the happy pass",()=> {
myFunction.mockImplementation(() => Promise.resolve("foo"))
//your assertion here
})

it("when it fails",()=> {
myFunction.mockImplementation(() => Promise.reject())
//your assertion here
})
})
})

Notez que vous devez vous moquer de lui sur lemodule. Sinon, vous importerez l'original et, plus tard, vous remplacerez le module par le modèle, ce qui n'aura aucun effet sur l'importation. Pensez à vous moquer comme un moyen de dire en plaisantant comment résoudre une importation. Donc, se moquer de quelque chose après son importation n'aura aucun effet.