Aqui está um exemplo básico do que meu teste de unidade precisa ser, usando o 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>
Agora eu estava pensando que isso é um pouco repetitivo.
Poderia colocar todas as entradas / saídas em uma matriz e passar por ela.
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]);
}
}
);
E isso funciona bem.
A única vantagem que posso pensar para esse segundo método é que, se você realmente não quiser usar equal, será mais fácil fazer essa alteração em um único local.
Em termos de legibilidade, não acho que seja conclusivo de qualquer maneira, embora provavelmente prefira o segundo.
Abstraindo ainda mais, você pode colocar os casos de entrada / saída em um arquivo CSV separado, o que pode facilitar a modificação.
A pergunta é: quais são as convenções gerais sobre como escrever esses tipos de testes de unidade?
Existe uma razão para você não colocá-los em matrizes?