Berikut adalah contoh dasar tentang apa yang harus dilakukan oleh unit test saya, menggunakan 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>
Sekarang saya berpikir ini agak berulang.
Bisa memasukkan semua input / output ke dalam array, dan mengulanginya.
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]);
}
}
);
Dan ini bekerja dengan baik.
Keuntungan tunggal yang dapat saya pikirkan untuk metode kedua ini, adalah bahwa jika ternyata Anda tidak benar-benar ingin menggunakannya equal
, lebih mudah untuk membuat perubahan itu di satu tempat.
Dalam hal keterbacaan, saya tidak berpikir itu konklusif baik, meskipun saya mungkin lebih suka yang kedua.
Mengabstraksi lebih lanjut, Anda bisa memasukkan kasus input / output ke file CSV terpisah, yang mungkin membuatnya lebih mudah untuk dimodifikasi.
Pertanyaannya adalah - apa konvensi umum seputar penulisan unit test semacam ini?
Apakah ada alasan mengapa Anda tidak memasukkannya ke dalam array?