2011-12-05 9 views
7

Tengo el siguiente establecido en QUnit alternativamente:QUnit comportamiento extraño con el accesorio, las pruebas en su defecto y pasando

/* Dozen or so previous tests here */ 

test("Test some markup generation", function() { 

    $('#qunit-fixture').plugin(); // jQuery plugin: Generates a table 

    var rows = $('#qunit-fixture table tbody tr'); 
    count = rows.length; // Count the rows 
    console.log(count); 

    equal(count, "96", "Expect the number of rows to be 96"); 
}); 

Cuando se ejecuta, o cuando actualice el navegador que alternativamente no pasa esta prueba muestra el recuento de = 0, o pasa esto y falla todas las pruebas anteriores. No hay variables globales definidas fuera de las pruebas. Si ajusto el conteo a 96 a mano, todo pasa bien, o si elimino esta prueba, o todas las pruebas anteriores, todo también pasa. Me pregunto si alguien ha tenido este comportamiento. He usado bastante QUnit y no he encontrado esto antes.

+2

No estoy seguro de si esto puede ser la causa, pero sería al menos más claro declarar el conteo como una variable local aquí. Quizás choca con alguna otra variable utilizada por qunit. –

+0

Vea el código fuente, que utiliza muchas referencias a 'count', y compruébelo usted mismo si puede haber un choque: http://code.jquery.com/jquery-1.7.1.js –

+0

También hay un 'función' que le permite hacer clic en una prueba en el informe de prueba, para seleccionar solo esa prueba para ejecutar. Me tomó una media hora para descubrir por qué parecía que solo tenía una prueba ;-) –

Respuesta

8

Bien, descubrí cuál es el problema y tiene que ver con el uso del elemento provisto. La documentación QUnit establece que:

El elemento # qunit-accesorio se puede utilizar para proporcionar y manipular marcas de prueba, y se restablecerán automáticamente después de cada prueba

Por reinicio quieren decir que sólo será "vaciado", no tiene ninguna propiedad adicional que pueda haber agregado se reinicie. Al ver mis preguntas, puede ver que estaba aplicando el complemento directamente al accesorio y que todas las propiedades añadidas estaban pendientes para la siguiente prueba que causaba estos problemas.

Antes de cada prueba ahora insertar un nuevo elemento en la luminaria y el objetivo de que con el plugin:

$('#qunit-fixture').append('<div id="target"></div>'); 
$('#target').plugin(); 

Este elemento añadido a continuación, obtener aclaró correctamente después de cada prueba. Si bien esto parece obvio ahora, no fue inmediatamente claro para mí a partir de la documentación.

ACTUALIZACIÓN:

Cambio presentados y se detuvo en QUnit el 14/2/2012: https://github.com/jquery/qunit/pull/195

Gracias, Jörn

+1

El cambio se envió y se retiró, pero se revertió el 29/02/2012. Todo lo que eso significa es que la solución anterior de no adjuntar complementos y propiedades a la qunit-fixture en sí misma sigue siendo necesaria. – purgatory101

Cuestiones relacionadas