Jest – funció de fletxa de greix simulada dins el component React – javascript , reactjs , jestjs , babel – jest

Donat el meu component i prova a continuació, ¿ per què el meu confirmClickHandler mètode encara es diu quan va executar la meva prova ?

Nota : Vaig notar que quan canvi el mètode d’una funció de fletxa gruixuda a només una funció regular, es burla correctament . Que m’estic perdent aquí ?

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

i la meva prova :

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();...}

Respostes

1 per a la resposta № 1

això funciona per a mi :

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()})

No obstant això, tingui en compte que això falla a l’usar shallow en lloc de muntar

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *