Esta pregunta es similar a esta anterior que abrí. Pero ahora estoy usando un marco diferente, Jest .
Mi código es así:
import * as React from "react"; import * as ReactDOM from "react-dom"; import * as injectTapEventPlugin from "react-tap-event-plugin"; import Application from "./components/Application"; import "./assets/styles/theme.css"; injectTapEventPlugin(); ReactDOM.render(<Application />, document.getElementById("root"));
Hay 3 cosas que me gustaría probar aquí:
injectTapEventPlugin()
fue llamado.ReactDOM.render
con los argumentos esperados, <Application />
y document.getElementById("root")
, respectivamente../assets/styles/theme.css
fue importado. Sé que este es extraño, pero esta importación está aquí para que el paquete web lo recoja y lo incluya en el paquete final. Tal vez esta importación no debería existir y debería asegurarme de que el archivo theme.css
esté cargado de alguna otra manera.Creo que al menos 1 y 2 deben probarse ... Jest usa Jasmine2 y también estoy usando Enzyme (pero eso probablemente no ayude aquí).
Cualquier ayuda es apreciada :)
El problema para probar esto es que el módulo solo importa cosas pero no exporta nada, lo que dificulta la prueba. Entonces, la primera pregunta que debe hacerse es "¿Por qué necesito probar esto?". Porque lo único que sucede aquí son 2 llamadas de función.
Probar #1 es fácil, simule el módulo con un espía, impórtelo a la prueba y verifique que se haya llamado al espía
import * as injectTapEventPlugin from "react-tap-event-plugin"; jest.mock('react-tap-event-plugin', ()=>jest.fn()) expect(injectTapEventPlugin).toHaveBeenCalled()
No estoy seguro si import * as
sintaxis es un problema en este caso.
Para probar el n. ° 2, no estoy seguro de si es posible probarlo, ya que no tiene forma de simular document.getElementBy
como se llama antes de poder sobrescribirlo en la prueba.