1. ¿Qué es Qunit?
QUNIT (http://qunitjs.com/) es un marco de pruebas de unidades JavaScript muy potente que puede ayudarlo a depurar su código. Fue escrito por miembros del equipo de jQuery y es una prueba oficial establecida para jQuery. Pero QUNIT generalmente es suficiente para probar cualquier código de JavaScript regular, incluso puede probar JavaScript del lado del servidor a través de algunos motores JavaScript como Rhino o V8.
Si no está familiarizado con el concepto de "pruebas unitarias", no se preocupe. Esto no es muy difícil de entender:
La copia del código es la siguiente:
En la programación de computadoras, las pruebas unitarias (también conocidas como pruebas de módulos) es una prueba que realiza pruebas de corrección en los módulos de programa (la unidad más pequeña de diseño de software). La unidad del programa es el componente más pequeño probable para la aplicación. En la programación de procedimientos, una unidad es un solo programa, función, procedimiento, etc.; Para la programación orientada a objetos, la unidad más pequeña es un método, que incluye métodos en clases base (superclases), clases abstractas o clases derivadas (subclases). - Citado de Wikipedia.
En pocas palabras, escribe pruebas para cada característica de su código, y si todas estas pruebas pasan, entonces puede estar seguro de que el código no es defectuoso (por lo general, depende de cuán exhaustiva sea su prueba).
2. ¿Por qué quieres probar tu código?
Si nunca ha escrito ninguna prueba unitaria antes, puede cargar directamente su código en el sitio web, haga clic durante un tiempo para ver si surgen problemas e intentar resolver los problemas que encontró. Habrá muchos problemas con este método.
En primer lugar, esto es muy molesto. Hacer clic no es en realidad un trabajo fácil, porque debe asegurarse de que todo se haga clic y hay una buena posibilidad de que se haya perdido uno o dos.
En segundo lugar, todo lo que haces para probar no es reutilizable, lo que significa que es difícil de retroceder. ¿Qué es el regreso? Imagine que escribió algún código y lo probó, solucionó todos los defectos que encontró y luego lo publique. En este punto, un usuario envía algunos comentarios sobre los nuevos defectos y requiere algunas características nuevas. Vuelve al código, soluciona estos nuevos defectos y agrega nuevas funciones. Lo que puede suceder después es que vuelven a aparecer algunos fallas viejas, que se llama "retorno". Mira, ahora tienes que hacer clic nuevamente, y es posible que no puedas encontrar estos viejos defectos de carga; Incluso si lo hace, tomará algún tiempo descubrir que su problema es causado por la regresión. Usando pruebas unitarias, escribe pruebas para encontrar defectos, y una vez que se modifica el código, filtra a través de la prueba nuevamente. Si se produce la regresión, algunas pruebas definitivamente fallarán, y puede reconocerlas fácilmente y saber qué parte del código contiene el error. Ahora que sabes lo que modificaste en este momento, se puede resolver fácilmente.
Otra ventaja de las pruebas unitarias, especialmente para el desarrollo web: facilita las pruebas de compatibilidad de los navegadores cruzados. Simplemente ejecute sus casos de prueba en diferentes navegadores. Si hay un problema con un navegador, lo arregla y vuelve a ejecutar estos casos de prueba para asegurarse de que no haya regresión en otros navegadores. Una vez que todos pasan la prueba, puede decir con certeza que todos los navegadores objetivo lo admiten.
Quiero mencionar un proyecto de John Resig: TestSwarm (http://testswarm.com/). Lleva las pruebas de la unidad de JavaScript a un nuevo nivel, al distribuirlo, este es un sitio web que contiene muchos casos de prueba que cualquiera puede ir allí para ejecutar algunos casos de prueba y luego devolver los resultados al servidor. De esta manera, el código se probará muy rápidamente en diferentes navegadores, o incluso se ejecutará en diferentes plataformas.
3. Cómo escribir pruebas unitarias con Qunit
Entonces, ¿cómo se escribe correctamente las pruebas unitarias con QUNIT? Primero, debe configurar un entorno de prueba:
La copia del código es la siguiente:
<! Doctype html>
<html>
<Evista>
<title> Qunit Test Suite </title>
<Link rel = "Stylesheet" href = "http://github.com/jquery/qunit/raw/master/qunit/qunit/qunit.css" type = "text/css" media = "pantalla">
<script type = "text/javaScript" src = "http://github.com/jquery/qunit/raw/master/qunit/qunit/qunit.js"> </script>
<!-El archivo de su proyecto va aquí->
<script type = "text/javaScript" src = "myproject.js"> </script>
<!-su archivo de pruebas va aquí->
<script type = "text/javaScript" src = "mytests.js"> </script>
</ablo>
<Body>
<h1 id = "QUNIT-HEADER"> QUNIT TEST SUITE </h1>
<h2 id = "qunit-banner"> </h2>
<div id = "qunit-testrunner-toolbar"> </div>
<h2 id = "qunit-useragent"> </h2>
<ol id = "QUNIT-TESTS"> </ol>
</body>
</html>
Como puede ver, aquí se usa una versión administrada de QUNIT Framework.
El código a probar se ha agregado a myproject.js, y su prueba debe insertarse en mytest.js. Para ejecutar estas pruebas, simplemente abra el archivo HTML en un navegador. Ahora es el momento de escribir algunas pruebas.
La piedra angular de las pruebas unitarias es la afirmación:
La afirmación es una propuesta que predice el resultado de retorno de su código. Si la predicción es falsa y la afirmación falla, sabe que algo está mal.
Ejecutar afirmaciones y debe ponerlas en el caso de prueba:
La copia del código es la siguiente:
// probemos esta función
función iseven (val) {
devolver val % 2 === 0;
}
test ('iseven ()', function () {
ok (iseven (0), 'cero es un número uniforme');
ok (iseven (2), 'entonces son dos');
ok (iseven (-4), 'entonces es negativo cuatro');
OK (! ISEVEN (1), 'uno no es un número uniforme');
OK (! ISEVEN (-7), 'Tampoco es negativo siete');
})
Aquí definimos una función: Iseven, que se usa para detectar si un número es un número impar, y queremos probar esta función para confirmar que no devolverá la respuesta incorrecta.
Primero llamamos a Test (), que construye un caso de prueba; El primer parámetro es una cadena que se muestra en el resultado, y el segundo parámetro es una función de devolución de llamada que incluye nuestro maestro interrumpido.
Escribimos 5 afirmaciones, todas las cuales son booleanas. Una afirmación booleana que espera que su primer argumento sea verdadero. El segundo parámetro sigue siendo el mensaje que se mostrará en el resultado.
Esto es lo que quieres obtener, siempre y cuando ejecute la prueba:
4. Referencia de aprendizaje en profundidad
El anterior solo presenta brevemente qunit.js, y hay muchos métodos de afirmación. Para más detalles, consulte la documentación de la API:
http://api.qunitjs.com/
Las pruebas unitarias son una muy buena manera de probar su código antes de publicarlo. Si no ha escrito ninguna prueba unitaria antes, ¡ahora es el momento de comenzar!