tag tab style change attribute javascript testing jestjs enzyme

javascript - tab - Simular un botón de clic en broma



title html (3)

Puede usar algo como esto para llamar al controlador escrito al hacer clic:

import { shallow } from ''enzyme''; // mount is not required page = <MyCoolPage />; pageMounted = shallow(page); // below line will execute your click function pageMounted.instance().yourOnClickFunction();

Simular un clic de botón parece una operación muy sencilla / estándar. Sin embargo, no puedo hacerlo funcionar en las pruebas de Jest.js.

Esto es lo que intenté (y también hacerlo usando jQuery), pero no pareció disparar nada:

import { mount } from ''enzyme''; page = <MyCoolPage />; pageMounted = mount(page); const button = pageMounted.find(''#some_button''); expect(button.length).toBe(1); // it finds it alright button.simulate(''click''); // nothing happens


Usando broma puedes hacerlo así:

test(''should call start logout on button click'', () => { const mockLogout = jest.fn(); const wrapper = shallow(<Component startLogout={mockLogout}/>); wrapper.find(''button'').at(0).simulate(''click''); expect(mockLogout).toHaveBeenCalled(); });


# 1 usando broma

Así es como uso la función de devolución de llamada simulada para probar el evento de clic

import React from ''react''; import { shallow } from ''enzyme''; import Button from ''./Button''; describe(''Test Button component'', () => { it(''Test click event'', () => { const mockCallBack = jest.fn(); const button = shallow((<Button onClick={mockCallBack}>Ok!</Button>)); button.find(''button'').simulate(''click''); expect(mockCallBack.mock.calls.length).toEqual(1); }); });

También estoy usando un módulo llamado enzyme La enzyme es una utilidad de prueba que hace que sea más fácil hacer valer y seleccionar sus componentes React.

# 2 usando Sinon

También puedes usar otro módulo llamado sinon que es una prueba independiente de espías, talones y simulacros para JavaScript. Así es como se ve

import React from ''react''; import { shallow } from ''enzyme''; import sinon from ''sinon''; import Button from ''./Button''; describe(''Test Button component'', () => { it(''simulates click events'', () => { const mockCallBack = sinon.spy(); const button = shallow((<Button onClick={mockCallBack}>Ok!</Button>)); button.find(''button'').simulate(''click''); expect(mockCallBack).toHaveProperty(''callCount'', 1); }); });

# 3 usando tu propio espía

Finalmente puedes hacer tu propio espía ingenuo.

function MySpy() { this.calls = 0; } MySpy.prototype.fn = function () { return () => this.calls++; } it(''Test Button component'', () => { const mySpy = new MySpy(); const mockCallBack = mySpy.fn(); const button = shallow((<Button onClick={mockCallBack}>Ok!</Button>)); button.find(''button'').simulate(''click''); expect(mySpy.calls).toEqual(1); });