JEST – Funcția de săgeată cu grăsime simulată în cadrul componentei React – JavaScript, Reactjs, JestJs, Babel-Jest

Având în vedere componenta mea și testul de mai jos, de ce confirmClickHandler Metoda este încă numită când îmi execută testul?

Notă: Am observat că atunci când modifică metoda unei funcții de săgeții groase doar unei funcții regulate, se bate corect. Ce pierd aici?

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

și testul meu:

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ăspunsuri

1 pentru răspunsul № 1

acest lucru pentru mine:

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

Totuși, rețineți că acest lucru nu reușește atunci când se utilizează shallow în loc de asamblare

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *