¿Hay alguna forma de burlarse de las funciones privadas con Jest?

El module ES6 que quiero probar se ve de la siguiente manera:

function privateFunction() { ... } export function publicFunction() { ... does something ... privateFunction() ... does something else ... } 

Estoy usando JEST para mis testings unitarias y estoy tratando de encontrar una forma de probar publicFunction y evitar la ejecución de privateFunction burlándome de él, pero no pude tener éxito en el bash de simulacro. ¿Alguna idea?

2 Solutions collect form web for “¿Hay alguna forma de burlarse de las funciones privadas con Jest?”

Descubrí una forma de burlarme de mi function privada usando el module babel-plugin-rewire .

En package.json tengo lo siguiente:

  "devDependencies": { ... "babel-plugin-rewire": "1.0.0-beta-5", "babel-jest": "18.0.0", ... 

En .babel.rc tengo lo siguiente:

 { "presets": [ "es2015", "stage-0", "react" ], "env": { "test": { "plugins": [ "babel-plugin-rewire" ] } }, ... 

En este punto, pude burlarme de la function privada:

 import * as moduleToTest from './moduleToTest.js' describe('#publicFunction', () => { it('mocks private function', () => { moduleToTest.__Rewire__('privateFunction', () => { console.log('I am the mocked private function') }) ... }) }) 

No hay forma de atravesar la naturaleza de JavaScript. La function está vinculada al scope del module, por lo que no hay forma de saber que esta function existe desde el exterior, por lo que no hay forma de acceder a la function y, al final, no hay forma de burlarse de ella.

Quizás más importante, no debe probar en el interior del object bajo testing, sino solo la API pública. Porque eso es todo lo que count. A nadie le importa cómo se hacen las cosas internamente, siempre y cuando la API pública se mantenga estable.

  • Mejores prácticas para desarrollar aplicaciones JavaScript más grandes
  • EmberJS + EmberCLI Unit Test Helper Función Indefinida
  • Informe de testings de JavaScript y cobertura de código de Jenkins
  • Prueba de unidad de Javascript en eclipse
  • ¿Cómo hacer funcionar spyOnProperty de Jasmine?
  • testings unitarias de funciones privadas con mocha y node.js
  • ¿Qué marco de testings para Javascript admite Pruebas sin browser?
  • Test suite para el soporte de ECMAScript 5
  • Cómo probar el controller usando mocha en Sails?
  • Angular 2 fakeAsync esperando time de espera en una function usando tick ()?
  • ¿Cómo afirmar / probar la respuesta JSON de los serveres?
  • Hacer que Jasmine se ejecute en el lado del server
  • Prueba navigator.browserLanguage o navigator.language con Sinon.js
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.