Jest – Funzione di freccia grassa simulata all’interno del componente React – JavaScript, ReactJS, Jesks, Babel-Jest

Dato il mio componente e il mio test di seguito, perché il mio confirmClickHandler Il metodo è ancora chiamato quando eseguo il mio test?

Nota: ho notato che quando modifico il metodo di una funzione di freccia spessa a una funzione regolare, è scarica correttamente. Cosa sto perdendo qui?

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

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

Risposte

/ h2> 1 per la risposta № 1

funziona per me:

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

Tuttavia, tieni presente che questo fallisce quando si utilizza shallow invece di Assemblaggio

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *