Jest – Fonction de flèche graisse simulée dans la réaction – Composant JavaScript, réactjs, Jestjs, Babel-Jest

Compte tenu de mon composant et testez ci-dessous, pourquoi mon confirmClickHandler La méthode est toujours appelée quand j’exécute mon test?

Remarque: j’ai remarqué que lorsque je modifie la méthode d’une flèche épaisse à une fonction régulière, elle se moque correctement. Qu’est-ce que je perds ici?

class CalendarConfirmation extends React.Component {...confirmClickHandler = (e) => {...}}

et mon test:

import React from "react";import {mount} from "enzyme";import CalendarConfirmation from "../components/CalendarConfirmation";describe("Test CalendarConfirmation", () => {let calendarConfirmation;calendarConfirmation = mount (<CalendarConfirmation />);calendarConfirmation.instance().confirmClickHandler = jest.fn();...}

Réponses

1 pour la réponse № 1

Ceci fonctionne pour moi:

import React from "react"import { mount, shallow } from "enzyme"class Foo extends React.Component {// babel transpiles this too Foo.prototype.canMockprotoMethod () {// will be mocked}// this becomes an instance propertyinstanceMethod = () => {return "NOT be mocked"}render () {return (<div>{`${this.protoMethod()} ${this.instanceMethod()}`}</div>)}}Foo.prototype.protoMethod = jest.fn().mockReturnValue("you shall")it("should be mocked", () => {const mock = jest.fn().mockReturnValue("be mocked")const wrapper = mount(<Foo />)wrapper.instance().instanceMethod = mockwrapper.update()expect(mock).toHaveBeenCalled()})

Toutefois, gardez à l’esprit que cela échoue lors de l’utilisation de shallow au lieu d’assembler

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *