2 votes

Je reçois une erreur car "useCounter" est en lecture seule."

Je fais une démonstration simple du compteur que j'utilise. jest and enzyme pour le tester. Je veux savoir si je clique sur increment bouton il appelle increment mais je reçois cette erreur

useCounter" est en lecture seule .

voici mon code https://codesandbox.io/s/awesome-jepsen-5os4e?file=/src/App.test.js

test("clicking button increment counter  i call increment function", () => {
  const f1 = jest.fn();
  useCounter = jest.fn(() => {
    return {
      state: "",
      increment: f1,
      decrement: null
    };
  });

  const wrapper = setup();

  // find button and click
  const button = findByTestAttr(wrapper, "increment-button");
  button.simulate("click");

  // find display and test value
  expect(f1).toHaveBeenCalled();
});

enter image description here

1voto

brijesh-pant Points 784

En regardant votre exemple de bac à sable, il semble que vous importiez déjà useCounter

como import useCounter from "./useCounter";

Et, ensuite, vous essayez de mettre à jour cette variable (ce qui n'est pas possible à faire).

Vous devez mettre à jour votre code comme ceci

import * as counter from './useCounter' // declare named exports in useCounter
const f1 = jest.fn();
counter.useCounter = jest.fn(() => {
  f1,
});

0voto

k-wasilewski Points 2713

Essayez de l'espionner (et assurez-vous qu'il ne s'agit pas d'une fonction de flèche) :

jest.spyOn(useCounter, 'useCounter').mockImplementation(() => {
    //your mock implementation
});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X