Aquí hay un ejemplo básico de lo que debe ser mi prueba de unidad, usando qunit:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<link rel="stylesheet" href="qunit/qunit-1.13.0.css">
<script src = "qunit/qunit-1.13.0.js"></script>
<script src = "../js/fuzzQuery.js"></script>
<script>
test("Fuzz Query Basics", function()
{
equal(fuzzQuery("name:(John Smith)"), "name:(John~ Smith~)");
equal(fuzzQuery("name:Jon~0.1"), "name:Jon~0.1");
equal(fuzzQuery("Jon"), "Jon~");
//etc
}
);
</script>
</head>
<body>
<div id="qunit"></div>
</body>
</html>
Ahora estaba pensando que esto es un poco repetitivo.
Podría poner todas las entradas / salidas en una matriz y recorrerla.
test("Fuzz Query Basics", function()
{
var equals = [
["name:(John Smith)", "name:(John~ Smith~)"],
["name:Jon~0.1", "name:Jon~0.1"],
["Jon", "Jon~"]
];
for (var i = 0; i<equals.length; i++)
{
equal(fuzzQuery(equals[i][0]), equals[i][1]);
}
}
);
Y esto funciona bien.
La única ventaja que se me ocurre para este segundo método es que si resulta que en realidad no quieres usarlo equal, es más fácil hacer ese cambio en un solo lugar.
En términos de legibilidad, no creo que sea concluyente de ninguna manera, aunque probablemente prefiera el segundo.
Para resumirlo más, podría colocar los casos de entrada / salida en un archivo CSV separado, lo que podría facilitar su modificación.
La pregunta es: ¿cuáles son las convenciones generales sobre cómo escribir este tipo de pruebas unitarias?
¿Hay alguna razón por la que no debería ponerlos en matrices?