Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Qunit, un poco de iluminacion!?

Estas en el tema de Qunit, un poco de iluminacion!? en el foro de Javascript en Foros del Web. Hola amigos! Empece a trabajar con Qunit para testear JavaScrip t pero la verdad es que no entiendo como hacer los test para funciones que ...
  #1 (permalink)  
Antiguo 16/10/2015, 08:41
Avatar de Ferdinand1945  
Fecha de Ingreso: noviembre-2010
Ubicación: Estocolmo
Mensajes: 62
Antigüedad: 14 años
Puntos: 1
Qunit, un poco de iluminacion!?

Hola amigos! Empece a trabajar con Qunit para testear JavaScript pero la verdad es que no entiendo como hacer los test para funciones que ya estan creadas. Por que crear una funcion en el mismo test es muy sencillo pero como compruebo una funcion que ya existe que debe, o no(en otras ocaciones), retornar un objeto? Les pongo unos ejemplos que hice yo mismo que NO son correctos para el test a ver si alguien me puede iluminar ya que la documentacion que encuentro es bastante vaga y no se entiende muy bien cuando se trata de funciones que vienen desde un archivo de origen externo.

tengo por ejemplo un test que se llama removeSpinner(); y lo que:
Código HTML:
    test('removeSpinner',function(){
        removeSpinner();
        $("#loading").get(0);
    });
donde el objeto a devolver seria este id="loading"
Código HTML:
$("#loading").get(0);
Este aqui se que es correcto por que me retorna un objeto o mas bien el elemento en la consola pero en Qunit me retorna esto:

Expected at least one assertion, but none were run - call expect(0) to accept zero assertions.
Source:
@http://localhost/test_tsr_common_scripts/qunit.html?testNumber=41:455:5
@http://localhost/test_tsr_common_scripts/qunit.html?testNumber=41:55:1

y Como no podia faltar un ejemplo de mis mas bonitos errores:
Código HTML:
test('showSuccess',function(){
        showSuccess();
        $("section.success").css("display", "none");
        $("section.success").show();
        QUnit.equal($("section.success").css("display"), undefined, "The element should be visible");
    });
Aca estoy creando la funcion en el mismo test y obviamente me va a salir true o mas bien que paso el test, cuando en realidad... ni idea si lo paso o no por que no estoy llamando ningun objeto que deberia retornar en el DOM... estoy en lo correcto o ya estoy tan entreverado qe parezco un borracho hablando de politica?

No entiendo muy bien como hacer esto y me urge aprender por que cada vez me siento mas novato con los frameworks de test...
Gracias a todo el que se tome el tiempo de mirar un poquito :)
  #2 (permalink)  
Antiguo 19/10/2015, 05:36
Avatar de Ferdinand1945  
Fecha de Ingreso: noviembre-2010
Ubicación: Estocolmo
Mensajes: 62
Antigüedad: 14 años
Puntos: 1
Respuesta: Qunit, un poco de iluminacion!?

Me respondo a mi mismo para quien lo necesite. En el primer caso no encontre como returnar el valor y que muestre pero en el resto si lo logre declarando una variable header que cree momentaneamente el elemento ya que no me traia los objetos o elementos desde el archivo original... asi que aca viene:
Código HTML:
Ver original
  1. test('showSuccess',function(){
  2.         showSuccess();
  3.          var header = $('<header class="main" />');
  4.         $("body").prepend(header);
  5.         showSuccess();
  6.         ok($("section").hasClass("success"), "test for showSuccessl() ok!");
  7.         header.remove();
  8.     });

Bueno lo que hice aca fue primero declarar una variable header que crea el elemento que debe contener el objeto o funcion a testear: var header = $('<header class="main" />');
$("body").prepend(header); --> tiro un prepend para poder tirar el elemento creado en body del test.
Al final tiro la "condicional" que mas que condicional es como un actual / expected:
showSuccess();
ok($("section").hasClass("success"), "test for showSuccessl() ok!");
header.remove();

Espero que le sirva a alguien por que yo me rompi el coco haciendolo por mas simple y tonto que parezca...

Etiquetas: dom, html, jquery
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 08:38.