Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

92
Views
probar un HoC de reacción con enzima. Mount no parece generar correctamente el componente secundario

Estoy creando un HoC para facilitar la creación de filas de tablas seleccionables. Estoy tratando de escribir pruebas para asegurarme de que represente el componente envuelto con los accesorios correctamente pasados. Desafortunadamente, no puedo hacer que mis pruebas funcionen ya que no parece que la enzima esté procesando todos los componentes (o, más probablemente, estoy haciendo algo un poco tonto).

CdC

 import React, { PropTypes, Component } from "react"; import { omit } from "lodash/fp"; const propsFilter = omit(["onSelect"]); export default function selectable(onSelect, isSelected) { return (component) => { const wrappedName = component.displayName || component.name || "Component"; const displayName = `Selectable(${wrappedName})`; const onClick = () => onSelect && onSelect(!isSelected); class SelectableWrapper extends Component { render() { return <component onClick={ onClick } { ...propsFilter(this.props) } />; } } SelectableWrapper.displayName = displayName; SelectableWrapper.propTypes = Object.assign({ onSelect: PropTypes.func, isSelected: PropTypes.bool, }, component.propTypes); return SelectableWrapper; }; }

Prueba

 /* eslint-env mocha */ "use strict"; import React from "react"; import { expect } from "chai"; import { spy } from "sinon"; import { mount } from "enzyme"; import selectable from "../../../src/js/components/tables/selectable"; describe("<SelectableHOC />", () => { let onSelect, isSelected; const TestElement = () => <p className="test">Hi</p>; const el = () => selectable(onSelect, isSelected)(TestElement); beforeEach("setup spy", () => onSelect = new spy()); it("renders the wrapped component, passing through props", () => { const hoc = el(); const wrapper = mount(<hoc name="foo" />); expect(wrapper).to.contain("p.test"); }); it("doesn't pass through onSelect"); it("sets onClick on the child component, which triggers onSelect"); });

Cuando pruebo wrapper.debug() en la prueba, obtengo <hoc data-reactroot="" name="foo"></hoc> .

El resultado de la prueba (que falla) es:

 1) <SelectableHOC /> renders the wrapped component, passing through props: AssertionError: expected <HTMLUnknownElement /> to contain p.test HTML: <hoc data-reactroot="" name="foo"></hoc> at Context.<anonymous> (test/components/tables/selectable.spec.js:43:39)
over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

El nombre de su componente está en minúsculas y en JSX el nombre que comienza con un nombre en minúsculas se considera etiquetas HTML, no componentes personalizados. Por lo tanto, deberá escribir en mayúscula el nombre de su componente.

Además, le recomiendo que cambie el nombre de su componente a algo más significativo para evitar conflictos con React.Component .

Puede leer más sobre esto en los documentos oficiales de reacción y esta pregunta.

over 4 years ago · Santiago Trujillo Report

0

Tienes que encontrar el componente envuelto y verificar los accesorios en eso

 const elWrapper = wrapper.find('TestElement'); expect(elWrapper.prop('onClick').to.not.equal(null); expect(elWrapper.prop('onSelect').to.equal(undefined);
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!