¿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.

  • loop through it () en jasmine describe output spec not found
  • Plugin de eclipse de cobertura JSTestDriver
  • testing events de keydown en Jasmine con código de key específico
  • Pruebas unitarias Javascript / JQuery con JSUnit vs Qunit frente a XUnit
  • ¿Cómo nos podemos burlar en Redux Async Actions?
  • Prueba de JavaScript sin cabeza de audio / video HTML5
  • ¿Cómo puedo probar la secuencia de llamadas de function de Sinon.js?
  • ¿Cómo puede una Unidad probar una function de encryption no determinista?
  • Prueba unitaria en Karma: pulsación de tecla dentro de una input de text
  • Prueba AngularJS con Jasmine incapaz de llamar a "angular.mock.module" mientras usa angular-mocks.js
  • ¿Cómo afirmar / probar la respuesta JSON de los serveres?
  • Cómo probar un equipo en una list desplegable en Jasmine / Angularjs
  • ¿Cómo me burlo del resultado en una promise de $ http.get al probar mi controller AngularJS?
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.