Tengo una simple pregunta. ¿Cómo se prueba la unidad de una función que depende de un parámetro? Como dicen por ejemplo:

Código:

function a(param) {
   if(param > 0) 
      return param+value;
   else
      return param;
}

¿Cómo se prueba la unidad de función sin tener param? Escucho esto yo uso burla o espías en el jazmín. Alguien puede mostrarme un ejemplo, estoy realmente confundido. Gracias a todos de antemano.

Edición:

Gracias por un conprehensive respuesta de David. Realmente lo aprecio. Aquí hay más información acerca de mi pregunta.

De hecho, esta es mi verdadera pregunta, tengo un archivo

snap-fed.js :

//Code here...

Que me gustaría unidad de prueba exhaustivamente como tú me enseñaste. Pero estoy seguro de cómo hacer esto utilizando el jazmín o mocha.

Gusta cómo puedo probar cualquiera de los métodos del objeto del snap? ¿Cómo podría unidad de prueba snap.la elegibilidad o complemento.isSnapResourceEligibile? Me han pegado en este tema para los 2 días, realmente no entiendo.

Todos ellos tienen en un parámetro de información que proporciona información sobre el objeto que está siendo trabajado por los métodos.

Esta era mi verdadera pregunta, pero no sabía cómo preguntar.

Edit 2:

Basado en David plantilla que he hecho este, pero no de correr…

snap-fed.spec.js :

describe("snap-fed", function() { 

  describe("Properties", function() { 

    it("should exist", function() {
      expect(Allowance).not.toBeUndefined(); 
      expect(AllowanceAdditional).not.toBeUndefined();
      expect(MaxAllowanceHouseholdSize).not.toBeUndefined();
    }); 

    it("should contain correct values", function() {
        expect(Allowance).toEqual([189, 347, 497, 632, 750, 900, 995, 1137]);
        expect(AllowanceAdditional).toBe(142);
        expect(MaxAllowanceHouseholdSize).toBe(Allowance.length);
    }); 
  });

  describe("Functions", functions(){

    it("should return the expected result", function() {
      expect(snap.isSnapResourceEligible(info)).toBeTruthy();
    });

    //Put more test cases for the various methods of snap

  });

}); 
  • Usted proporciona el parámetro como un argumento en la unidad de prueba y, a continuación, afirmar que el valor de retorno es el esperado.
  • Por favor, puedes darme un ejemplo? Lo que estás diciendo tiene sentido, pero creo que si vi un ejemplo, yo entiendo mucho mejor
InformationsquelleAutor mosawi | 2014-09-02

1 Comentario

  1. 4

    La prueba podría tener este aspecto en el Jazmín:

        describe("Function a", function() {
    
          it("is defined", function() {
            expect(a).not.toBeUndefined();
          });
    
          it("should return expected result for a positive parameter", function() {
            var result = a(19);
    
            expect(result).toEqual(24);
          });
    
          it("should return expected result for a negative parameter", function() {
            var result = a(-1);
    
            expect(result).toEqual(-1);
          });
    
          it("should return expected result for parameter zero", function() {
            var result = a(0);
    
            expect(result).toEqual(5);
          });
    
        });

    Este escenario está a la espera de la variable value dentro de la función a a ser una constante igual a 5. La situación puede ser más compleja y las pruebas que iba a mirar de manera diferente. Si hay alguna lógica acerca de la value variable, por favor, mostrar en su pregunta, a continuación, voy a editar mi respuesta.

    EDITAR: muestra de prueba para la segunda parte de su pregunta

    Así que si la elegibilidad de la función de este aspecto después de la eliminación de la Q.fcall:

    eligibility: function (info) {
                return {
                    eligible : snap.isSnapIncomeEligible(info) && snap.isSnapResourceEligible(info),
                    savings : snap.calcSavings(info)
                };
        }

    Entonces usted puede probar el complemento de objeto como este por ejemplo:

    describe("Snap", function() {
    
      var snap = ... //get the snap object here...
    
      var disabledMemberInfo = {
        disabledMember: true,
        age: 50,
        fpl: 1.2,
        householdSize: 10,
        moneyBalance: 4000
      };
    
      it("is defined", function() {
        expect(snap).not.toBeUndefined();
      });
    
      it("has eligibility defined", function() {
        expect(snap.eligibility).not.toBeUndefined();
      });
    
      it("return positive eligibility for disabled member with fpl < 1.2 and money balance 4000", function() {
    
        var result = snap.eligibility(disabledMemberInfo);
    
        expect(result).not.toBeUndefined();
        expect(result.eligible).not.toBeUndefined();
        expect(result.savings).not.toBeUndefined();
    
        expect(result.eligible).toEqual(true);
      });
    
    });

    Yo no cubren la totalidad del objeto del snap con las pruebas. Pero más de la prueba será similar, mi código debe ser un ejemplo y más pruebas, construido en una manera similar.

    • Gracias! Caso de prueba tiene el sentido perfecto!
    • He añadido la información adicional solicitada
    • Gracias a la ampliación de su pregunta, esto hace que sea mucho más complicado 🙂 voy a estar feliz de ayudar con ello. Pero, por favor, me explique lo que es el punto de la Q.fcall(function () {...}. No estoy familiarizado con la Q pero esta llamada devuelve una promesa, ¿verdad? Me parece a mí como lo es totalmente, no es necesario. Estoy preguntando, porque es un poco más complejo para probar código asincrónico, por lo que la omisión innecesaria promesas haría más fácil. Gracias!
    • Tienes razón, eso es una promesa. Las promesas será omitido en el proyecto, así que por favor ignorar esa parte. Y gracias por tu disposición a ayudar
    • OK! Actualizado mi respuesta. Si usted tiene alguna pregunta, hágamelo saber por favor.
    • Gracias soo mucho! Voy a estudiar tu respuesta
    • Estoy tratando de ejecutar esto, pero me da un error que dice ReferenceError: requieren no está definida por lo que no está reconociendo la requiere palabra clave, ¿cómo puedo hacer que funcione?
    • Yo sólo estaba tratando de mostrar que usted necesita para obtener una referencia al objeto del snap. Por favor, cambie esta línea de código a cualquier cosa que le dará el complemento de objeto.
    • Yo tengo trabajo, y yo no podría haber hecho nada de esto sin ti. Gracias de nuevo!

Dejar respuesta

Please enter your comment!
Please enter your name here