Hier ist ein grundlegendes Beispiel, wie mein Komponententest mit qunit aussehen muss:
<!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>
Jetzt dachte ich, das ist ein bisschen repetitiv.
Könnte alle Ein- / Ausgänge in ein Array setzen und durchschleifen.
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]);
}
}
);
Und das funktioniert gut.
Der einzige Vorteil, den ich mir für diese zweite Methode vorstellen kann, ist, dass equal
es einfacher ist, diese Änderung an einer Stelle vorzunehmen, wenn sich herausstellt, dass Sie sie nicht wirklich verwenden möchten .
In Bezug auf die Lesbarkeit denke ich nicht, dass es so oder so schlüssig ist, obwohl ich wahrscheinlich die zweite bevorzuge.
Wenn Sie es weiter abstrahieren, können Sie die Eingabe- / Ausgabefälle in einer separaten CSV-Datei ablegen, was die Änderung möglicherweise vereinfacht.
Die Frage ist: Wie lauten die allgemeinen Konventionen für das Schreiben solcher Komponententests?
Gibt es einen Grund, warum Sie sie nicht in Arrays einordnen sollten?